0

我编写了一个 PowerShell 脚本,它使用WinRAR 命令行创建一个自解压存档(又名 SFX)可执行文件。问题是VERSIONINFO元数据完全为空(通过右键单击*.exe已构建的文件,转到Properties并单击Details选项卡来访问)。

这是我在脚本中使用的 WinRAR 命令:

$WinRarInstallPath = "$Env:ProgramFiles\WinRAR\winrar"

<#
    WinRAR arguments used:
        a       - Add files to an archive
        -cfg-   - Ignore default profile and environment variable 
        -ep1    - Exclude base folder from names
        -iadm   - Request administrative access for SFX archive
        -iicon  - Path to icon to use for installer
        -r      - Recurse subfolders
        -sfx    - Create self-extracting archive
        -z      - Path to archive comment file (SFX configuration file)
#>
&$WinRarInstallPath a -cfg- -ep1 -iadm -iicon"$IconPath" -r -sfx -z"$ConfigFilePath" `
    "$InstallerName" "$SourceFilesPath\*" | Out-Null

WinRAR 是否有命令行开关可以让我填写版本和版权信息?*.exe如果没有,在构建SFX 文件后是否有某种方法可以填写该信息?

4

1 回答 1

0

我可以通过手动将 VERSIONINFO 文件添加到 WinRARDefault64.SFX文件的副本(在 WinRAR 的安装路径中找到)然后使用它来构建 SFX 来解决这个问题。以下是步骤:

  1. Default64.SFX文件复制到硬盘上的某个位置(例如桌面)。
  2. 将您在步骤 1Default64.SFX中复制的文件重命名为.Default64.exe
  3. 在 Visual Studio 中打开Default64.exe(您可能需要打开 Visual Studio,选择File -> Open -> File,然后单击Open按钮右侧的箭头并单击Open With...。然后在Open With对话框中打开,选择资源编辑器并单击确定按钮)。
  4. 如果没有Version文件夹,右键单击顶级文件夹(名为Default64.exe)并单击Add Resource。在列表中选择版本并单击新建按钮。如果有版本文件夹,只需双击文件夹中的文件。
  5. 更改您需要的所有元数据并保存所有内容。
  6. 关闭 Visual Studio。
  7. 重命名Default64.exeDefault64.SFX.
  8. 将 PowerShell 调用更改为 WinRAR 的命令行可执行文件,并在-sfx开关中指定Default64.SFX您修改的文件的路径:
&$WinRarInstallPath a -cfg- -ep1 -iadm -iicon"$IconPath" -r -sfx"C:\path\to\Default64.SFX" ` 
    -z"$ConfigFilePath" "$InstallerName" "$SourceFilesPath\*" | Out-Null
于 2019-08-02T18:13:02.553 回答