【问题标题】:What is a good free utility to create a self-extracting executable with an embedded file version? [closed]有什么好的免费实用程序可以创建带有嵌入式文件版本的自解压可执行文件? [关闭]
【发布时间】:2008-09-30 01:20:50
【问题描述】:

根据this 问题的答案,我无法在我的 .msi 文件中嵌入文件版本。

我给客户端的安装程序需要有文件版本。

所以,我要做的是创建一个包含 msi 文件和 Visual Studio 生成的 setup.exe 的自解压可执行文件,并将文件版本放在这个自解压可执行文件上。

因此,我需要一个实用程序来创建支持在其输出中嵌入文件版本的自解压可执行文件。它还需要支持解压后自动运行文件,这样我才能自动启动真正的安装程序。如果它是可编写脚本的就好了。

我只能找到this,看起来不错,但我更喜欢免费的替代品。

有人有什么建议吗?

编辑:澄清一下,我并不是真的要创建安装程序 - 我已经有一个 VS 安装项目。我只想要一个自解压器(就像 WinZip 可以创建的那样)。因此,用户将鼠标悬停在 Setup-Blorgbeard2008.exe 上,会看到“版本:1.0.0.0”。用户双击它,它会静默地将 setup.exe 和 setup.msi 提取到临时文件夹,然后运行 ​​setup.exe。然后用户会看到正常的安装程序屏幕并正常进行。

另一个编辑: 是的,我不再需要自解压器了,因为我的另一个问题现在已经得到解答。这使得整个问题几乎无关紧要。 最好只分发一个文件,而不是 setup.exe 和 setup.msi。

【问题讨论】:

  • 我很确定您不需要 Setup.exe ...我通常只是将其删除并自行分发 MSI。 :-)
  • 我认为 setup.exe 会检查 Windows Installer 等。也许我错了。

标签: installation versioning self-extracting


【解决方案1】:

有点惊讶它还没有在此处列出:IExpress 是 Windows 附带的一个简单工具,可用于创建自解压安装程序。

【讨论】:

  • 哇,我不知道这个工具的存在。开始 -> 运行 -> iexpress,给想看的人。
  • 我知道这些工具的存在,但是 VS.Net 2008 附带的引导程序存在一些问题,您必须解决这些问题。根据我的记忆,无法以脚本形式完成,因此不幸的是它没有什么价值。
  • @Richard B:有关该问题的解决方案(即解决方法),请参阅此线程:social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/…
【解决方案2】:

NSIS 可以做到这一点。

我们构建环境的一部分是一个脚本,它将版本信息输出到我们的 NSIS 脚本来源的“头”文件。您应该能够使用类似的东西来嵌入您的版本信息,并且您当然可以让 NSIS 在提取后运行文件。

事实上,随着 NSIS 创建安装程序包...您可以大大简化您的方法。

【讨论】:

    【解决方案3】:

    下载 Windows SDK 时,有 MSStuff.exe 和 Setup.exe,MS 提供源代码编译。 MSIStuff 会将您提供的 MSI “填充”到 Setup.exe 中。然后可以分发 Setup.exe。

    更多信息http://support.microsoft.com/kb/888473

    缺点:

    • 每当您的产品有新版本 (MSI) 时,您都必须使用您的产品版本重新编译 Setup.exe。
    • 不确定 Setup.exe 源的分发许可证是什么。

    【讨论】:

    • 有没有人将它与 MSBuild 场景或 NAnt 构建场景集成?这是一个很酷的交易,但如果它不能作为构建过程的一部分,那么它就是那么“酷”,但没有帮助。
    • 如果您准备好 Setup.exe,MSIStuff.exe 命令可以通过 轻松与 MSBuild 一起使用。我误会你了吗?
    【解决方案4】:

    实际上我最终在这个特定版本中使用了 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
    

    【讨论】:

      【解决方案5】:

      DotNetZip 可以生成自解压存档,其中包括显示在 Windows 资源管理器鼠标悬停中的版本号。 SFX 还包括产品名称、描述、产品版本和版权,显示在 Windows 资源管理器的属性/详细信息视图中。

      SFX 可以运行您在提取后指定的命令。

      可以从 powershell 编写 SFX 脚本,也可以使用 VB.NET、C#、VBScript 或 JavaScript 等编写程序来完成。

      要获取版本号,您至少需要 v1.9.0.26 的 DotNetZip。

      【讨论】:

        【解决方案6】:

        nsis 看起来是个不错的选择

        【讨论】:

          【解决方案7】:

          试试inno-setup

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

          VersionInfoVersion = 1.1.0.0
          

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

          【讨论】:

          • Inno Setup (Ver. 6.x - JRSoftware) 和 InnoScript (Kymoto - Ver. 2.x) 都显示他们在virustotal.com 上有病毒。当我打包我的可分发文件时,我会在我的安装中检测到病毒。我给他们俩写了信,但他们没有回复。
          【解决方案8】:

          这里正在进行实验:

          弹出版本信息: http://screencast.com/t/LVqvLfxCj3g

          来自 Visual Studio 程序集信息: http://screencast.com/t/fqunlMNh13

          使用普通的旧 MSI 文件安装。

          通过将“版本:1.5.0”文本添加到安装项目的描述属性中,版本号也会显示在 MSI 文件中,如下所示: http://screencast.com/t/A499i6jS

          我通常只是将 MSI 文件重命名,如 DataMonkey_1_5_0.msi 用于我自己的目的。

          【讨论】:

            【解决方案9】:

            仅供参考,如果您使用引导程序 setup.exe 来验证 .NET 是否已安装(DotNetZip 自解压器需要 .NET 2.0),则使用 DotNetZip 自解压器没有意义。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-07-27
              相关资源
              最近更新 更多