将 VERSIONINFO 添加到 SFX 安装程序
Add VERSIONINFO to SFX installer
我编写了一个 PowerShell 脚本来创建自解压存档 (a.k.a.SFX) 可执行文件 WinRAR command-line. The problem is that the VERSIONINFO 元数据完全为空(通过右键单击 *.exe
文件,转到 属性 ,然后单击 详细信息 选项卡。
这是我在脚本中使用的 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 有命令行开关可以让我填写版本和版权信息吗?如果没有,在构建 SFX 的 *.exe
文件后是否有某种方法可以填写该信息?
我能够通过手动将 VERSIONINFO 文件添加到 WinRAR 的 Default64.SFX
文件(在 WinRAR 的安装路径中找到)的副本,然后使用它来构建 SFX 来解决这个问题。以下是步骤:
- 将
Default64.SFX
文件复制到硬盘上的某个位置(例如桌面)。
- 将您在 步骤 1 中复制的
Default64.SFX
文件重命名为 Default64.exe
。
- 在Visual Studio中打开
Default64.exe
(您可能需要打开Visual Studio、select 文件->打开->文件,然后单击打开按钮右侧的箭头,然后单击打开方式...。然后在打开的 Open With 对话框中,select Resource Editor 并单击 OK 按钮).
- 如果没有 Version 文件夹,请右键单击顶级文件夹(名为
Default64.exe
)并单击 Add Resource. Select Version 并单击 New 按钮。如果有 Version 文件夹,只需双击文件夹中的文件即可。
- 更改您需要的所有元数据并保存所有内容。
- 关闭Visual Studio.
- 将
Default64.exe
重命名回 Default64.SFX
。
- 将 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
我编写了一个 PowerShell 脚本来创建自解压存档 (a.k.a.SFX) 可执行文件 WinRAR command-line. The problem is that the VERSIONINFO 元数据完全为空(通过右键单击 *.exe
文件,转到 属性 ,然后单击 详细信息 选项卡。
这是我在脚本中使用的 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 有命令行开关可以让我填写版本和版权信息吗?如果没有,在构建 SFX 的 *.exe
文件后是否有某种方法可以填写该信息?
我能够通过手动将 VERSIONINFO 文件添加到 WinRAR 的 Default64.SFX
文件(在 WinRAR 的安装路径中找到)的副本,然后使用它来构建 SFX 来解决这个问题。以下是步骤:
- 将
Default64.SFX
文件复制到硬盘上的某个位置(例如桌面)。 - 将您在 步骤 1 中复制的
Default64.SFX
文件重命名为Default64.exe
。 - 在Visual Studio中打开
Default64.exe
(您可能需要打开Visual Studio、select 文件->打开->文件,然后单击打开按钮右侧的箭头,然后单击打开方式...。然后在打开的 Open With 对话框中,select Resource Editor 并单击 OK 按钮). - 如果没有 Version 文件夹,请右键单击顶级文件夹(名为
Default64.exe
)并单击 Add Resource. Select Version 并单击 New 按钮。如果有 Version 文件夹,只需双击文件夹中的文件即可。 - 更改您需要的所有元数据并保存所有内容。
- 关闭Visual Studio.
- 将
Default64.exe
重命名回Default64.SFX
。 - 将 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