使用wix工具集安装多个exe

2024-02-23

我有三个产品,其安装程序位于 .exe 文件中。 假设这三个产品的安装程序是

  • 产品_A.exe
  • 产品_B.exe
  • 产品_C.exe

我想使用 wix 工具集创建一个 msi 文件,它将安装这三个 exe 安装程序。

做这个的最好方式是什么? 我还想让我的 MSI 失败,以防三个 exe 中的任何一个安装失败。 我对这些很陌生,所以请帮助。

任何例子将不胜感激

我还计划在卸载 msi 后卸载这些产品。

预先感谢您的任何帮助


Tools:有许多工具可用于创建 MSI。一些商业和 WiX - 开源解决方案。这是工具的快速摘要 https://stackoverflow.com/a/50229840/129130。商业工具很优秀,但价格昂贵,WiX(免费、开源)也很优秀,但有一个学习曲线(XML 文本源)。请记住,在大多数情况下,设置顾问可以帮助您快速制作此类​​软件包,但您可能需要内部知识。工具长评 https://stackoverflow.com/a/1546941/129130.

内聚与耦合:您可能需要创建 3 个不同的 MSI 来安装这些产品,或者您可以将它们全部放在同一个 MSI 中。以下是一些注意事项 https://stackoverflow.com/questions/1542656/wix-to-install-multiple-applications/1546916#1546916决定要做什么。记住不要教条,而要务实——什么最适合您的具体情况?您可以通过在您创建的 MSI 中公开功能来仅允许安装某些工具 - 只允许从单个 MSI 安装某些功能。功能示例截图 https://superuser.com/a/785825/11906.

安装程序:还有允许的功能setup.exe引导程序/安装程序启动器按顺序安装包含在其中的多个 MSI 文件。 WiX 具有烧录组件 https://stackoverflow.com/questions/50889307/wix-burn-doesnt-allow-to-remove-file/50892350#50892350,商业工具有多种选择(InstallShield 套件项目 https://stackoverflow.com/questions/49190377/msi-build-uninstall-installed-directory-not-removing/49212599#49212599、先决条件等...-信息在这里 https://stackoverflow.com/questions/52446750/removing-default-dialogs-from-msi).

Details: 至于实际设置。你需要确定他们实际安装的内容 https://stackoverflow.com/questions/6060281/windows-installer-and-the-creation-of-wix/12101548#12101548(要点 3)- 先决条件和所有(COM、COM+、GAC、Java、VC++ 运行时等...)。您可能可以通过以下方式获得该信息,也可能无法获得1)内部专业知识(开发人员)的文档。2) 您可以提取文件 https://stackoverflow.com/questions/1547809/extract-msi-from-exe/24987512#24987512从设置来看(检查它们是否是已经从 setup.exe 中出来的 MSI 文件!), 3)安装设置并检查应用程序操作依赖/分析工具 https://stackoverflow.com/a/51940598/129130. 4) 最好的方法是找到旧的安装脚本用于编译旧的安装程序。5)您还可以“捕获”旧的安装 EXE 文件以自动转换为 MSI。有时,这需要专家进行认真的清理,并且通常需要昂贵的工具。在这里查看更多信息 https://stackoverflow.com/a/53296461/129130。可能还有进一步的方法。开发人员将转储文件就位,开始注册它们并安装运行时,然后继续进行,直到事情(看起来)可以正常工作,以便弄清楚在设置中要做什么(让他们记下一些好的笔记)。


包装团队:请注意,大多数大公司都有整个团队来负责将设置转换为 MSI - 通常称为“应用程序打包”。如果您在一家大公司,也许可以尝试找到他们,看看他们是否可以提供帮助(或者只是让他们为您捕获您的设置 - 使用昂贵的工具 - 供您清理 - 清理起来可不简单)。


Links:

  • 关于功能、setup.exe 启动器以及如何分解和捆绑安装程序的长答案 https://stackoverflow.com/a/49501700/129130
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用wix工具集安装多个exe 的相关文章

  • 使用 BitmapEncoder 生成时如何使 GIF 循环重复

    我能够使用 BitmapEncoder C WinRT 创建动画 gif 但是 我一直无法弄清楚如何让GIF循环回来并从头开始 没有尝试太多 因为我不确定要尝试什么 搜索了更多要在 GIF 上设置的属性 但找不到任何相关内容 好吧 终于能弄
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 开发者可以在 Windows 应用程序中使用 iCloud 吗?

    开发人员可以使用 Apple 的 iCloud API 在 Mac OS X 和 iOS 上的不同版本的应用程序之间同步应用程序数据 如果开发人员拥有 Windows 版本的应用程序 该版本是否也可以使用 iCloud 将应用程序数据与 M
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 如何使用 PowerShell 扩展 ZIP 存档(UTF-8 文件名)

    我的 zip 存档有一个文件 P re No l txt 该 zip 可以通过 Windows 文件资源管理器 7 Zip 或我尝试过的任何其他工具很好地扩展 但我不知道如何从 PowerShell 中做到这一点 显然我已经尝试过展开 存档
  • 从 Python 下载/安装 Windows 更新

    我正在编写一个脚本来自动安装 Windows 更新 我可以将其部署在多台计算机上 这样我就不必担心手动更新它们 我想用 Python 编写这个 但找不到任何关于如何完成此操作的信息 我需要知道如何搜索更新 下载更新并从 python 脚本安
  • C# WMI 在远程 PC 上运行一个 exe,然后在同一台 PC 上运行另一个 exe,然后在网络路径上调用 Directory.CreateDirectory 并失败

    使用 C WMI 我在另一台计算机上启动一个 exe 该 exe 使用 C 启动另一个 exeProcess班级 最后一个 exe 尝试调用Directory CreateDirectory使用网络路径 又名 comp1 d dir Dir
  • 如何使用Python在Django for Windows中激活虚拟环境?

    我被告知要在 Django for Windows 中激活虚拟环境 我应该尝试 environment path Scripts activate 但是当我输入该命令时 cmd 返回此错误 该系统找不到指定的路径 我通过输入以下命令创建了虚
  • 所有平台上的java

    如果您想用 java 为 Windows Mac 和 Linux 编写桌面应用程序 那么所有这些代码都相同吗 您只需更改 GUI 即可使 Windows 应用程序更像 Windows 等等 如果不深入细节 它是如何工作的 Java 的卖点之
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 如何验证文件名称在 Windows 中是否有效?

    是否有一个 Windows API 函数可以将字符串值传递给该函数 该函数将返回一个指示文件名是否有效的值 我需要验证文件名是否有效 并且我正在寻找一种简单的方法来完成此操作 而无需重新发明轮子 我正在直接使用 C 但针对的是 Win32
  • Windows 上的递归移动命令

    我需要做一个 sh 的 bat 副本 我不太了解 Windows cmd 在 Linux 上我可以做 mv or rsync a SOURCE DEST remove sent files ignore existing whole fil
  • Windows 上的 ffmpeg-android ndk

    我正在尝试编译 bash 文件 带有 android ndk 的 ffmpeg 我收到如下错误 arm linux androideabi gcc 无法创建可执行文件 C 编译器测试失败 Makefile 2 config mak 没有这样
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 什么是 SO_SNDBUF 和 SO_RCVBUF

    你能解释一下到底是什么吗SO SNDBUF and SO RCVBUF选项 好的 出于某种原因 操作系统缓冲传出 传入数据 但我想澄清这个主题 他们的角色 通 常 是什么 它们是每个套接字的缓冲区吗 传输层的缓冲区 例如 TCP 缓冲区 和
  • 如何使用 Wix 运行 sql 脚本创建数据库

    我在使用 Wix 创建数据库时遇到问题 我能找到的示例 参见下面的链接 都是首先使用 wix 创建数据库并运行创建表 sql 脚本 问题是我需要将 wix 设置为使用 CREATE DATABASE 运行 sql 脚本来创建数据库和表 而不
  • 更改当前工作目录 VS13?

    如本文所述post https stackoverflow com questions 11979632 c sdl why does sdl loadbmp return null我调试 SDL 程序时的工作目录是相对于 vcproj 而
  • 使用 Visual C++ 在桌面上绘图

    我正在编写一个 opencv 应用程序 使用 Visual Studio VC 控制台应用程序使用激光束进行绘图 我想在桌面上画线 我知道绘图功能在 GDI32 dll 中可用 但对如何将 GDI32 dll 与我的 vc 代码集成感到困惑
  • Qt GUI 应用程序中的控制台输出?

    我有一个在 Windows 上运行的 Qt GUI 应用程序 它允许传递命令行选项 在某些情况下我想向控制台输出一条消息 然后退出 例如 int main int argc char argv QApplication a argc arg
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望

随机推荐

  • Recycler View 回调活动

    我正在尝试为单个回收器视图项目实现单击侦听器 并使用单击的数据 单个借用者 从我的活动中运行方法 怎么处理呢 我是 kotlin 新手 所以分步指导将会非常有帮助 Thanks 主要活动 val db by lazy Database ge
  • Java RXTX 库不加载本机库

    基本上我想使用 Arduino 编写一个简单的通信工具java 的 RXTX 库 http rxtx qbang org wiki index php Main Page并且在加载动态库时严重失败 我的系统规格 操作系统 OS X 优胜美地
  • 自动更新java应用程序

    我正在构建可以从网上免费下载的 Java 应用程序 我想添加自动更新功能 以修复错误或增强应用程序 为了自动更新 我将程序分成 3 个单元 基础 非常小的代码 将检查第二个单元 上传器 的新版本 更新它并运行它 上传器将检查项目的新更新并下
  • 一对多单向 Hibernate 映射不保存子表

    我有两张表叫做Person and Address 我映射的这些表一对多与 hibernate 使用注释 然后在我的父实体中Person我创建一个Set
  • 在 primefaces 中为动态菜单元素设置 id 不起作用

    我正在使用 primefaces 5 3 我正在动态生成一个 primefaces 菜单 我想在菜单元素上设置 id 以便可以根据该 id 显示工具提示 我的代码是 DefaultMenuModel menuModel new Defaul
  • 将数据帧 Pandas 中的对象 dtype 列转换为数字 Dtype

    试图回答这个问题获取每列的唯一字符串列表 https stackoverflow com questions 39647978 get list of unique string values per column in a datafra
  • ValueError:未找到 SavedModel 包!尝试将 TF2.0 模型部署到 SageMaker 时

    我正在尝试将 TF2 0 模型部署到 SageMaker 到目前为止 我成功地训练了模型并将其保存到 S3 存储桶中 但是当我调用 deploy 方法 我从 cloudWatch 收到以下错误 ValueError no SavedMode
  • 在 Kotlin 中定义 log TAG 常量的最佳方法是什么?

    我正在我的 Android 应用程序中创建我的第一个 Kotlin 类 通常出于记录目的 我有一个带有名称的常量TAG 我在 Java 中要做的是 private static final String TAG MyClass class
  • realUrl 不为默认语言编写 preVar

    我在 TYPO3 4 5 26 上运行 realURL 1 12 6 我习惯于 realURL 创建包含 preVar 的路径 也适用于默认语言 例如 www example com de seite 和 www example com e
  • iOS 13中如何获取状态栏高度?

    在 iOS 13 中UIApplication shared statusBarFrame height warns iOS 13 0 中已弃用 statusBarFrame 使用 statusBarManager 而是窗口场景的属性 如何
  • Jenkins 不执行 Jenkinsfile 中的步骤

    为什么 jenkins 不执行我的 jenkinsfile 我的构建的控制台输出是这样的 20 06 19 Started by GitLab push by 20 06 19 Building in workspace var jenki
  • 向文本输入添加默认值 Angular 2

    背景 我有一个表单 其中的输入字段包含用户的电子邮件地址 我正在使用插值将电子邮件添加到placeholder field Problem 我不希望用户能够更改此字段中的电子邮件地址 我只希望他们能够看到它 但我确实希望它与表格一起发布 Q
  • Firebase RecyclerView 未加载新数据

    每次用户将项目添加到 Firebase 中的某个数据库引用时 我都会尝试创建一个实时 RecyclerView 这是我的模型类 IgnoreExtraProperties public class Poll private String q
  • 无法使用 Xuggler 对视频进行编码

    我正在尝试使用 Xuggler 创建简单的应用程序 它必须将图片序列编码为视频 我已经安装了 xuggler 如官方网站所述 这是代码示例 我实际上是在 Xuggler wiki 网站上找到的 import java awt Color i
  • Python 中十六进制数的二进制补码

    下面的a和b 十六进制 代表有符号二进制数的补码 例如 a 0x17c7cc6e b 0xc158a854 现在我想知道 a 和 b 以 10 为基数的有符号表示 抱歉 我是一名低级程序员 并且是 python 新手 觉得问这个问题很愚蠢
  • UITextField - 当应用程序来自后台时键盘不会隐藏

    在我的 iOS 应用程序中 我在视图底部有 UITextfield 因此 当用户开始输入文本时 我向上滑动视图 以便用户可以看到他们正在输入的内容 输入文本时 视图向上移动 然后按主页按钮 应用程序进入后台 现在点击应用程序的图标 它将应用
  • 如何在 Swift 中仅从共享扩展启动应用程序而不弹出弹出窗口?

    我是 iOS 应用程序开发的初学者 我想通过从另一个应用程序复制链接来启动我的应用程序 添加共享扩展 单击它会显示弹出窗口 但我的要求是它不应该显示弹出窗口并在单击我的共享扩展时直接打开我的应用程序 我做了什么 1 在info plist中
  • 如何为 Django 建立 nginx 虚拟服务器 + fcgi?

    我想通过 nginx 运行多个虚拟主机 每个虚拟主机通过 fcgi 提供不同的 django 应用程序 这可能吗 如果是这样 有人有关于从哪里 如何开始的良好资源吗 nginx 文档似乎主要是示例 但没有我正在尝试的特定配置 最近有两篇关于
  • 最好的 Emacs 工作区插件是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 通过工作区 我的意思是 我需要保存打开缓冲区的状态 可能在用户指定的工作区文件中 并快速切换到另一组打开缓冲区 例如继续处理与另一个项目相关的文
  • 使用wix工具集安装多个exe

    我有三个产品 其安装程序位于 exe 文件中 假设这三个产品的安装程序是 产品 A exe 产品 B exe 产品 C exe 我想使用 wix 工具集创建一个 msi 文件 它将安装这三个 exe 安装程序 做这个的最好方式是什么 我还想