将 exe 和 msi 文件合并到一个安装程序中

2024-04-14

我有两个安装文件:

  • 间谍软件
  • 后续.msi

我希望将这两个安装文件合并到一个安装文件中,以便可以在目标计算机上同时一一安装。我尝试了 NSIS,但它只是从安装文件中提取文件,但没有安装软件包。 Inno Setup 也做了同样的事情。

我的问题是如何制作一个安装程序来在另一台计算机上提取并安装上述两个软件包?


分布范围?: 不确定总体目标是什么:worldwide distribution or corporate deployment,或者到底是什么 你正在做的事。这对有意义的事情有重大影响 在解决方案方面。对于企业部署,甚至是批处理文件 可能没问题。大多数情况下我会推荐WiX Burn http://wixtoolset.org/documentation/manual/v3/bundle/ (free, capable, maintained - i.e security fixes http://wixtoolset.org/development/wips/5184-burn-clean-room/).


Batch(或 PowerShell、ActiveScripting 等...):对于企业部署,一个简单的批处理文件就可以工作,只是指出显而易见的事情。它甚至可以与 SCCM 等部署工具结合使用(当然,它还有许多其他部署方式)。您也可以将批处理文件与下面的自解压存档工具结合起来。出于安全原因,我不喜欢使用它。MSI 文件的静默安装(命令行示例) https://stackoverflow.com/a/52059242/129130.

7-Zip - 等:这个工具(以及类似的工具,例如WinRAR)可以制作在提取上运行命令的自解压存档。我看到很多人在使用这些工具时遇到问题,并且通常与安全相关 - 或运行时依赖问题 https://stackoverflow.com/questions/51757086/error-creating-a-7-zip-installer-package/51757384#51757384.

dotnetinstaller 引导程序 http://dblock.github.io/dotnetinstaller/: 我不太了解。它只是一个引导程序。为您按顺序运行事情。这是 github.com(开源) https://github.com/dotnetinstaller/dotnetinstaller。当我简单地尝试一下时,我发现它有点奇怪。只是想提一下。

NSIS: 正如上面 Zett42 所建议的 http://nsis.sourceforge.net/Embedding_other_installers。请注意,我发现 NSIS 二进制文件与恶意软件扫描程序存在问题(当我报告该问题时,工具作者迅速采取了措施)。运行成品virustotal.com http://virustotal.com检查误报。这也适用于所有其他工具。

Inno http://www.jrsoftware.org/ishelp/:再说一次:不是我使用的工具,但是应该能够做你需要做的事情 https://stackoverflow.com/a/16644836/129130.

WiX Burn http://wixtoolset.org/documentation/manual/v3/bundle/:这可能是最灵活、最强大的免费选项。商业工具将更易于使用,但我认为这个框架应该涵盖大多数用例。有点繁琐——它既复杂又强大。请参阅此处顶部彩色部分,了解 WiX Burn“操作方法”链接 https://stackoverflow.com/a/52121996/129130.


商业选择:还有几种商业选择:高级安装程序 http://www.advancedinstaller.com(非常先进:有条件安装先决条件 https://www.youtube.com/watch?v=fMuH2zEF0_o), 安装盾 http://www.installshield.com (主视图套件项目的屏幕截图 https://stackoverflow.com/a/49212599/129130), ETC...


一些链接:

  • 创建 7-zip 安装程序包时出错 https://stackoverflow.com/questions/51757086/error-creating-a-7-zip-installer-package/51757384#51757384
  • 如何创建 Windows 安装程序 https://stackoverflow.com/questions/49624070/how-to-create-windows-installer/49632260#49632260
  • 常用部署工具 https://stackoverflow.com/questions/50225031/windows-service-not-shown-in-add-remove-programs-under-control-panel/50229840#50229840 (MSI)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 exe 和 msi 文件合并到一个安装程序中 的相关文章

随机推荐

  • 循环遍历动态添加元素的数组

    jQuery 新手 请求帮助解决我无法解决的问题 克隆的表行包含
  • 使用 run-as 命令在 Samsung 4.4.2“程序包未知”上调试本机应用程序

    在尝试通过 Galaxy S4 上的 Eclipse 调试 Android 本机应用程序时 我在 run as 命令中收到 包未知 错误 有一个开放的这说明了与许可相关的问题 data system packages list文件必须是rw
  • NSMutableArray 与 NSArray 哪个更好

    这是一个有点愚蠢的问题 但是如果我想将一个对象添加到数组中 我可以使用两者来完成NSMutableArray and NSArray 我应该使用哪个 NSMutableArray array1 array1 addObject obj NS
  • 当另一个应用程序开始/停止播放音频时,我的应用程序可以收到通知吗?

    我的 iOS 游戏有音乐和音效 我想让用户听自己的音乐来代替游戏的背景音乐 一个简单的解决方案是添加一个新的菜单项来禁用游戏的背景音乐 但是 我想避免创建新的菜单项 除非我确信这种方法对用户来说更糟糕 我目前的做法 将音频会话类别设置为AV
  • 为什么 RNN 需要两个偏置向量?

    In Pytorch RNN 实现 http pytorch org docs master nn html highlight rnn torch nn RNN 有两个偏差 b ih and b hh 为什么是这样 它与使用一种偏差有什么
  • 如何强制 PM2 使用我的应用程序的最新版本?

    我首先调用 PM2pm2 start index js watch ignore watch node modules 然而 尽管告诉它查看我的文件是否有更改然后重新加载 但当我从 git 拉取时 它并没有使用我的应用程序的最新版本 要测试
  • 尽管手机设置了静音模式,但在 Android 通知中播放声音

    我的应用程序正在显示通知 并且当显示通知时 会播放声音 但是当我的手机处于 静音模式 时 不会播放通知 我想 覆盖 音量设置 并在设置了静音模式的情况下播放声音 有办法做到吗 您好 您可以使用 MediaPlayer 作为通知声音 方法是启
  • 如何返回元素的个数?

    我必须编写一个函数 它接受一个整数列表作为参数并返回列表中小于 1 的整数的数量 到目前为止 我所拥有的是一个仅返回列表中的整数个数的函数 我不确定应该在哪里 是否放置 if 语句和计数器以仅返回有多少个整数小于 1 export num
  • HTML 复选框的选中属性的正确值是多少?

    我们都知道如何在 HTML 中形成复选框输入
  • Google Play,发布应用程序更新,“本机平台”问题

    我有一个混合应用程序 我过去曾发布过更新 在当前的更新中 我添加了原生 facebook 登录 这需要在 libs 文件夹下添加 facebook jar 包 现在 当我在 PlayStore 中添加我的 APK 时 一切都很好 除了本机平
  • Dart:在 Windows 上构建时出现“无效参数:路径中存在非法字符”

    我的 index html 文件中的违规行如下 错误报告是 Build error Transform polymer PolymerBootstrapTransformer on myproj frontend web index htm
  • Ping 到存储过程以了解 .net 中的执行是否已完成?

    我必须执行一个存储过程 当我执行该操作时 我必须继续检查 ping 该执行是否完成 我将更新标签 我们在 C 中有什么办法可以做到这一点吗 异步调用存储过程 并让回调更新您的标签 这是一篇关于它的文章 http www devx com d
  • 计算机编程艺术练习题:第 1 章,问题 8

    我正在做 TAOCP 第 1 卷第 3 版的练习 但无法理解以下练习的答案中使用的语法 第 1 章练习 8 Computing the greatest common divisor of positive integers m n by
  • 干预/图像需要文件信息

    我在干预 图像方面遇到问题 Laravel composer install intervention image 2 1 1 requires ext fileinfo gt the requested PHP extension fil
  • 如何改进构建器模式?

    动机 最近我寻找一种方法来初始化复杂的对象 而不需要向构造函数传递大量参数 我尝试使用构建器模式 但我不喜欢这样的事实 即我无法在编译时检查是否确实设置了所有需要的值 传统建造者模式 当我使用构建器模式来创建我的Complex对象 创建更加
  • 在 C 中无需 va_list 即可访问可变参数函数的参数

    是否可以使用指向最后一个命名参数的指针 void 指针 来迭代可变参数函数的参数 我知道这不是使用可变参数的正确方法 但我仍然感兴趣这是否可行 将指针设置到字符串的末尾不起作用 因为在我开始移动指针后 它指向程序中使用的其他字符串 incl
  • 根据之前从本地存储选择的过滤器推送历史记录

    由于我是 React 新手 我尝试根据本地存储中存储的先前选择的过滤器正确实现路由 然后在应用程序启动时将它们推送到历史记录 有超时 如果没有超时 应用程序会在获取用户上下文 令牌身份验证之间跳转 http localhost 3000 t
  • 链表数组 C++

    所以我以为我理解如何实现指针数组 但我的编译器说否则 任何帮助将不胜感激 我觉得我已经很接近了 但缺少一些关键的东西 1 我声明了一个名为 node 的结构 struct node int num node next 2 我已经声明了一个指
  • 如何以编程方式检测小米设备中的全屏手势模式

    我正在编写一个 Android 应用程序 需要计算屏幕的高度才能正确显示内容 但是当我切换到全屏手势模式时 我在小米设备 Mi 9 SE 中获得的高度不正确 如何获取小米设备屏幕的真实高度 或者检查用户是否开启了全屏手势模式 我已经尝试过这
  • 将 exe 和 msi 文件合并到一个安装程序中

    我有两个安装文件 间谍软件 后续 msi 我希望将这两个安装文件合并到一个安装文件中 以便可以在目标计算机上同时一一安装 我尝试了 NSIS 但它只是从安装文件中提取文件 但没有安装软件包 Inno Setup 也做了同样的事情 我的问题是