什么是良好的免费的实用工具,以创建一个自我提取的可执行有一个嵌入式文件的版本吗?[关闭]

StackOverflow https://stackoverflow.com/questions/151403

根据答案 个问题,我无法嵌入一个文件版本。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 看起来是个不错的选择

尝试 inno-setup

将VersionInfoVersion指令设置为二进制版本号,例如

VersionInfoVersion = 1.1.0.0

这将出现在鼠标悬停文本和属性

在此进行实验:

弹出版本信息: 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没有意义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top