【问题标题】:How to create a robust, minimal installer for Windows? [closed]如何为 Windows 创建一个强大的、最小的安装程序? [关闭]
【发布时间】:2009-07-02 12:11:10
【问题描述】:

我想创建一个带有一些特定属性的安装程序 EXE:

  1. 应该是单个 exe 文件
  2. 它应该是健壮的(即该技术应该可以在任何 Windows 系统上正常工作)
  3. 它应该只在 %systemroot% 中创建一个文件(一个 .scn 屏幕保护程序文件)
  4. 它应该在“控制面板 -> 添加或删除程序”中添加卸载该特定文件的选项,但无需创建任何新条目 C:\Program Files 或将卸载程序.exe 复制到某处。

我见过这样工作的安装程序 - 那么该怎么做呢?

【问题讨论】:

  • 必须是EXE吗?大多数 Windows 安装程序现在都构建为 MSI(Microsoft 安装程序).. =)
  • 如果您确实想出了解决方案,请务必将副本发送给 Microsoft。他们还没有做到。
  • 嗯,是的——它也可能是 MSI,只要 MSI 安装程序文件可以安装在任何 Windows 机器上,无需先决条件
  • 正确版本的 Windows Installer 是 MSI 的先决条件,但这应该适用于几乎任何 Windows 系统(如果缺少它,大多数设置都会失败)。
  • 嗯...如果它只是复制一个文件,并且该文件无论如何都是一个程序(scn屏幕保护程序只是重命名为exe),为什么不让一个程序具有三种不同的模式呢? “不带参数运行” == 复制到 %systemroot%,显示对话框“感谢安装”。使用参数 /s == 显示屏幕保护程序运行。使用参数 /u == 卸载运行(从 %systemroot% 删除)。

标签: windows installation


【解决方案1】:

看看NSIS,它很简单,用于为 Windows 创建安装程序。

【讨论】:

  • 我发现这个 GUI 工具对设置我的安装脚本很有帮助nsis.sourceforge.net/NSIS_Script_Editor
  • 对于这么简单的事情,NSIS 是最好的选择。
  • 内置脚本语言允许自定义设置。
  • +1 因为允许从 *nix 创建安装程序(从 Linux 交叉编译,2.51 已经存在于 Debian/unstable 软件包中)
【解决方案2】:

正如你所说,它可以是 MSI,我建议沿着这条路线走。

您可以在 Visual Studio 中使用安装程序项目(如果有的话;我不确定 Express 版本是否支持制作安装程序),因为它们会很乐意生成一个 MSI 来满足您的要求.值得注意的是,他们会生成一个 EXE 和一个 MSI,但您只需要分发 MSI。

如果做不到这一点,请查看Windows Installer XML (WiX),因为它可以让您手工打造一个 MSI,它可以完全按照您的意愿去做,并且可以满足您上述所有五点。

注意:使用 MSI 意味着您需要在要安装到的计算机上安装 Windows Installer - 从 Windows 2000/ME 开始,它是内置的。

【讨论】:

  • 不,Express 版本不支持制作安装程序。
  • 所以我尝试了 Visual Studio 和安装程序项目,但是创建的 MSI 想要在 windows“程序文件”文件夹中创建一个文件夹。我无法从安装程序中删除它,因为它告诉我这是一个必需的文件夹并且无法删除:(所以现在我要试试 NSIS...
  • WiX 已被 Microsoft Windows Installer 团队推荐 - 相当推荐。 blogs.msdn.com/windows_installer_team/archive/2006/05/12/…
  • 在尝试 WiX(或其他任何东西)之前应推荐使用 InnoSetup。它非常简单,几乎不涉及学习曲线,即使对于商业应用也是免费的,并且没有任何不足之处
【解决方案3】:

我听说过免费安装程序 Innosetup 的好消息,网站说它可以创建单个 EXE 安装。

【讨论】:

  • 启动 Inno Setup 更好,因为有一个向导来制作安装文件。
  • Innosetup 非常简单,只需复制示例文件并添加您自己的 exe 名称即可。你不需要 pascal 脚本,除非你需要一些非常复杂的东西
  • 我与 NSIS 进行了广泛的合作,尝试过 IExpress,深入研究了 WiX,现在尝试了 InnoSetup。我必须说后者远远胜过所有其他解决方案。
  • 我根据这个答案尝试了 Innosetup,不到一个小时我就得到了安装程序。花了一两个多小时才弄清楚如何让我的程序在安装后运行、在引导时启动以及基于通配符复制文件。总的来说,简单灵活,我推荐。
【解决方案4】:

试试Advanced Installer,我想它可以满足你的所有要求。我将它用于稍微复杂的安装程序,但免费版本易于使用且功能强大。

MSI 文件可能存在问题,较旧的 PC 没有最新的 Windows Installer 3.1,因此您需要先安装它或提示用户安装!如果您只想复制一个文件,您是否考虑过使用IExpress?

【讨论】:

    【解决方案5】:

    NSIS 和 Inno Setup 都将处理所有指定的任务。 Inno Setup 的脚本使用类似 Pascal 的语言,NSIS 使用自己的脚本语言。

    【讨论】:

      【解决方案6】:

      我注意到这个答案仍在阅读中。这个答案已经超过 5 年了,这里的大部分信息可能不再相关。使用 IExpress 也有其风险,您可以了解更多关于 here 的信息。

      如果你还是想继续,这里是旧答案:

      IExpress

      您可以使用名为“Iexpress”的 Microsoft Windows 内置安装程序向导。要访问它,请打开“运行”,这是通过同时按下 Windows 键和 R (WindowsKey+R) 来完成的。当你进入“运行”时,输入小方框“iexpress.exe”。然后点击进入。你在那里!

      注意事项:仅适用于 Microsoft Windows(合法和非合法)

      设置说明:
      第 1 页

      • 创建自解压指令文件。
        制作新的安装文件
      • 创建自解压指令文件。
        编辑 .SED 文件
        第 2 页(创建自解压指令文件。)
      • 查看底部的“说明”
        第 3 页
      • 包标题
        安装程序的名称,显示在顶部
        第 4 页
      • 确认提示
        在安装前告诉用户什么
        第 5 页
      • 许可协议
        如果您不知道这是什么请跳过
        第 6 页
      • 打包文件
        您需要安装哪些文件
        第 7 页
      • 显示窗口 窗口的显示方式
        第 8 页
      • 显示在顶部 第 9 页
      • 包名称和选项 保存文件的位置
      • 隐藏用户提取文件的进度 隐藏动画
      • 在安装程序中使用长名称存储文件 如果您不知道这是什么,请忽略 第 10 页
      • 显示在顶部
        大功告成!
        单击标题下载文件,无需执行这些说明。如果它是病毒、被感染或您认为它是病毒,请随时删除该文件。

      【讨论】:

        【解决方案7】:

        您可以通过 3 个步骤仅使用 Visual Studio 2017 Pro 和 Windows 创建单个安装程序文件:

        1. 要在“添加/删除程序”中有条目,您需要有一个 设置项目。
        2. 安装项目可以编译成 2 个文件:*.msi 和 安装程序.exe
        3. 要创建自解压包,您可以使用 IExpress 工具

        【讨论】:

        • 正是我所需要的。谢谢
        • 我认为如果您可以在此处发布更多详细信息,而不是链接到 Youtube 上的该视频,这个答案会更好。您会看到,指向外部网站的链接总是会失效(例如,Youtube 不会关闭,但他们可以删除视频),如果没有该视频,这个答案不会有太大帮助。所以请edit它并添加更多内容。此外,与文本相比,视频的可用性并不好(您无法搜索它们的内容,也无法打印它们,它们需要几分钟而不是几秒钟来快速扫描......)。谢谢!
        • 感谢您的衷心评论。我希望 StackOverflow 具有托管教程视频的功能,这样我们就不必在另一个平台上托管它。
        【解决方案8】:

        NSIS、MSI 任何安装程序都可以为您完成。

        NSIS 非常小巧紧凑。

        【讨论】:

          【解决方案9】:

          NSIS 是要走的路,学习起来非常简单,只需编写一个简单的文件,指定要安装的文件在哪里。您还可以添加 QuickLaunch 选项等。然后运行 ​​NSIS 编译器,你就得到了 exe。

          【讨论】:

            【解决方案10】:

            InstallShield 有一个名为“Single .EXE”的发布选项。它可以将有效负载捆绑在内部,按照您的指定插入带有添加-删除程序的寄存器。

            【讨论】:

              【解决方案11】:

              不在某处复制安装程序和在添加/删除中添加条目似乎是反作用的。我的理解是添加-删除程序必须引用驻留在 Windows 目录中的卸载程序的副本(因此它不会失去对它的访问权限)。

              如果您向屏幕保护程序传递某种命令行选项,也许您可​​以将屏幕保护程序兼作卸载程序。然后简单地告诉 msi 卸载程序是屏幕保护程序(因此无需对其他目录进行不必要的处理。)

              【讨论】:

              • 有了 MSI,Windows 将它缓存在 %windir%\installer 中,所以它不会在 %programfiles% 或其他任何地方创建任何文件,我想这可能满足第 5 点的精神,如果不是确切的措辞 =)
              • 它似乎非常具体“或没有在某处处理卸载程序”......缓存与应对?
              • 如果该 chache 文件夹对用户隐藏,缓存实际上很好
              【解决方案12】:

              如果您想在安装程序中使用标准部署方法,您可能应该远离 NSIS。有关概述,请参阅 http://unattended.sourceforge.net/installers.php。

              【讨论】:

                【解决方案13】:

                我建议使用 Microsoft Visual Studio 安装程序项目。它非常易于使用。

                https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects

                您可以将其作为扩展安装在 Visual Studio 中。

                【讨论】:

                  【解决方案14】:

                  试试CQtDeployer 工具。此工具使用Qt Installer Framework 创建安装程序并支持 Windows 和 Linux 平台。

                  1. 安装cqtdeployer 工具。建议我使用在线安装程序,因为它具有最新版本的 cqtdeployer 并修复了一些小错误。
                  2. 使用您的框架环境打开 cmd。
                  3. 在 cmd 上为您的应用程序运行 cqtdeployer。
                  cqtdeployer -bin path\to\myApp.exe qif 
                  

                  如果您使用 Qt,则添加 qmake 选项。

                  cqtdeployer -bin path\to\myApp.exe -qmake path\to\qmake.exe qif 
                  

                  有关使用此工具的更多示例,请参阅 CQtDeployer Wiki

                  【讨论】:

                    猜你喜欢
                    • 2018-09-12
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-06-27
                    • 2010-11-27
                    • 2011-01-26
                    • 2011-04-15
                    • 2011-07-20
                    • 2011-02-07
                    相关资源
                    最近更新 更多