什么是良好的免费的实用工具,以创建一个自我提取的可执行有一个嵌入式文件的版本吗?[关闭]
-
02-07-2019 - |
题
根据答案 此 个问题,我无法嵌入一个文件版本。msi文件。
安装,我给客户的需要有一个文件版本。
所以,我想要做的是创建一个自提取可执行的含msi文件和setup.exe 所产生的Visual Studio,并把文件版本上的这种自我提取可执行的替代。
因此,我需要一个实用工具,用于创建自提取可执行文件支持嵌入一个文件版本在其输出。它还需要支持的自动运行的一个文件之后提取的,这样我就可以开始真正的安装自动的。这将是好的,如果是编写脚本.
所有我能找到的是 此, ,这看起来很棒,但我会更喜欢一个免费的替代方案。
没有任何人有任何建议?
编辑: 为了澄清,我不是真的在寻找创造一个安装-我已经有一个VS安装项目。我只想要一个自我提取器(如因可以创建)。所以,用户鼠了Setup-Blorgbeard2008.exe见"的版本:于1.0.0.0".用户doubleclicks,它的默默的提取物setup.exe 和安装。msi到一个临时文件夹,然后运行setup.exe.然后用户认为正常的安装屏幕并进入正常的。
另一个编辑: 耶,我不需要自行提取器了,因为我的另一个问题现在已经回答。这使得这整个问题非常无关紧要的。它的 会 仍然可以只分发一个文件,而不是setup.exe 和安装。msi。
解决方案
NSIS可以做到这一点。
我们的构建环境的一部分是将版本信息输出到“标题”的脚本。我们的NSIS脚本源文件。您应该能够使用类似的东西来嵌入您的版本信息,并且您当然可以让NSIS在提取后运行文件。
事实上,当NSIS创建安装程序包时......您可以大大简化您的方法。
其他提示
有点惊讶它尚未列在此处: IExpress 是一个简单的工具即将推出使用Windows,可用于创建自解压安装程序。
当你下载Windows SDK,MSIStuff.exe 和Setup.exe 对于这MS提供源代码来编译。MSIStuff会的"东西"MSI你把它变成Setup.exe.Setup.exe 然后可以将分布。
更多信息 http://support.microsoft.com/kb/888473
缺点:
- 你必须要重新编译Setup.exe 与版的产品每次有新的版的产品(MSI)。
- 不知道什么许可证的Setup.exe 源分布。
我实际上最终使用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
DotNetZip 可以生成自解压存档,其中包含在Windows资源管理器中显示的版本号鼠标移到。 SFX还包括在Windows资源管理器的“属性/详细信息”视图中显示的产品名称,描述,产品版本和版权。
SFX可以运行提取后指定的命令。
可以从powershell编写SFX的脚本,或者使用VB.NET,C#,VBScript或JavaScript等编写程序来编写它。
要获取版本号的东西,至少需要vNet.9.0.26的DotNetZip。
nsis 看起来是个不错的选择
在此进行实验:
弹出版本信息: http://screencast.com/t/LVqvLfxCj3g
从Visual Studio程序集信息: http://screencast.com/t/fqunlMNh13
使用普通的旧MSI文件安装。
添加“版本:1.5.0”将文本放入安装项目的Description属性中,版本号也显示在MSI文件中,如下所示: http://screencast.com/t/A499i6jS
我通常只是为了我自己的目的重命名MSI文件,比如DataMonkey_1_5_0.msi。
如果您使用bootstrapper setup.exe来验证.NET已安装(DotNetZip self-extractor需要.NET 2.0),那么使用DotNetZip自提取器的FYI没有意义。