有什么好的免费实用程序来创建带有嵌入式文件版本的自解压可执行文件?
根据此问题的答案,我无法在.msi文件中嵌入文件版本。
我提供给客户端的安装程序需要具有文件版本。
因此,我要做的是创建一个包含msi文件和Visual Studio生成的setup.exe的自解压可执行文件,然后将文件版本放在此自解压可执行文件上。
因此,我需要一个实用程序来创建自解压可执行文件,该程序支持在其输出中嵌入文件版本。它还需要支持提取后自动运行文件,因此我可以自动启动真正的安装程序。如果可以编写脚本,那就太好了。
我所能找到的就是这个,看起来不错,但是我更希望有一个免费的替代方案。
有没有人有什么建议?
编辑:澄清一下,我并不是真的想创建一个我已经有VS安装项目的安装程序。我只想要一个自解压程序(例如WinZip可以创建)。因此,用户将鼠标悬停在Setup-Blorgbeard2008.exe上,看到的是"版本:1.0.0.0"。用户双击它,它以静默方式将setup.exe和setup.msi提取到一个临时文件夹中,然后运行setup.exe。然后,用户会看到正常的安装程序屏幕,并照常进行。
另一个编辑:是的,我现在不需要自解压器,因为我的其他问题现在已经回答了。这使得整个问题几乎无关紧要。能够仅分发一个文件而不是setup.exe和setup.msi仍然很好。
解决方案
尝试inno-setup
将VersionInfoVersion指令设置为二进制版本号,例如
VersionInfoVersion = 1.1.0.0
这将出现在鼠标悬停的文本和属性中
nsis看起来是个不错的选择
在这里进行实验:
弹出版本信息:
http://screencast.com/t/LVqvLfxCj3g
从Visual Studio程序集信息:
http://screencast.com/t/fqunlMNh13
与普通的旧MSI文件一起安装。
通过在安装项目的Description属性中添加" Version:1.5.0"文本,MSI文件上也会显示版本号,如下所示:
http://screencast.com/t/A499i6jS
通常,出于我自己的目的,我通常只重命名MSI文件,例如DataMonkey_1_5_0.msi。
当我们下载Windows SDK时,有MSIStuff.exe和Setup.exe,MS会为其提供源代码进行编译。 MSIStuff会将我们提供给它的MSI"填充"到Setup.exe中。然后可以分发Setup.exe。
有关更多信息,请访问http://support.microsoft.com/kb/888473
缺点:
- 每次有新版本的产品(MSI)时,都必须使用产品的版本重新编译Setup.exe。
- 不知道Setup.exe源文件分发在哪个许可证下。
NSIS可以做到这一点。
我们的构建环境的一部分是一个脚本,该脚本将版本信息输出到NSIS脚本来源的"头"文件中。我们应该能够使用类似的方法来嵌入版本信息,并且当然可以让NSIS在提取后运行文件。
实际上,随着NSIS创建安装程序包,我们可以大大简化方法。
实际上,我最终针对该特定版本使用了NSIS,因为我还需要捆绑其他一些安装程序。
供参考,这是我使用的脚本:
VIProductVersion "1.0.0.0" ; set version here VIAddVersionKey "FileVersion" "1.0.0.0" ; and here! VIAddVersionKey "CompanyName" "MyCompany" VIAddVersionKey "LegalCopyright" "? MyCompany" VIAddVersionKey "FileDescription" "Installer for MyProgram" OutFile MyProgram-Setup.exe SilentInstall silent Section Main SetOutPath $TEMP SetOverwrite on File SharedManagementObjects.msi File SQLSysClrTypes.msi File Release\Setup.exe File Release\Setup.msi ExecWait 'msiexec /passive /i "$OUTDIR\SharedManagementObjects.msi"' ExecWait 'msiexec /passive /i "$OUTDIR\SQLSysClrTypes.msi"' Exec '"$OUTDIR\Setup.exe"' SectionEnd
尚未在此处列出,这有点让人惊讶:IExpress是Windows附带的一个简单工具,可用于创建自解压安装程序。
DotNetZip可以生成一个自解压存档,其中包括一个版本号,该版本号显示在Windows资源管理器的鼠标悬停中。 SFX还包括在Windows资源管理器的"属性/详细信息"视图中显示的产品名称,描述,产品版本和版权。
SFX可以运行我们在提取后指定的命令。
SFX的创建可以使用powershell编写脚本,也可以使用VB.NET,C#,VBScript或者JavaScript等编写程序来执行。
要获取版本号,我们至少需要DotNetZip v1.9.0.26.
如果使用Bootstrapper setup.exe来验证是否已安装.NET,则使用DotNetZip自解压器的FYI没有任何意义(DotNetZip自解压器需要.NET 2.0)。