(Un)在 WIX Burn 安装程序中安装 NSIS 包

Posted

技术标签:

【中文标题】(Un)在 WIX Burn 安装程序中安装 NSIS 包【英文标题】:(Un)Installing NSIS packages in WIX Burn installer 【发布时间】:2013-10-30 19:44:38 【问题描述】:

我正在尝试让我的 Wix Burn 安装程序安装两个使用 NSIS 作为其安装程序的应用程序。安装效果很好。但是,我希望在我卸载我的应用程序时删除它们(Permanent="no")。这不是那么简单,因为我无法从 ExePackage 上的 UninstallCommand 属性调用不同的 exe(创建的 uninstall.exe)。还有其他方法吗?是否有 NSIS 安装程序可以用来卸载的简单命令行参数?

【问题讨论】:

你的问题不是很清楚。我所理解的是安装程序 A 安装 B 和 C(通过静默执行他们的 nsis 设置?)。但是当A被卸载时,B&C没有被卸载,对吧? 是的。在 Wix 捆绑包 (A) 中,如果我正确引用 B 和 C,当我卸载 A 时,它将触发 B 和 C 的卸载。但是,它假定您正在使用 MSI(或从 MSI 构建的 EXE),它将安装程序和卸载程序存放在同一个文件中。 NSIS 显然不是这样工作的。 【参考方案1】:

您必须请求这些安装程序的作者添加对此的支持,NSIS 默认不支持它。

我什至认为安装人员支持它没有任何意义:

    同一程序可以在同一台机器上安装多次(单个用户和所有用户?,多个版本?) 如果安装程序不写入注册表怎么办,它甚至应该如何找到原始安装?

【讨论】:

我担心这会是一个干净的答案。但是,我认为可以对您的两点提出异议。至少,这就是我想要做的。从用户的角度来看,如果我安装了一个需要某些 prereq 的应用程序,如果我删除了该应用程序,我不希望 prereq 在之后挥之不去。我想无论这是否是一种普遍(或流行)的想法,这都是我们在这种情况下想要的。【参考方案2】:

不是我所谓的完美答案,而是一个实用的答案,所以我想我会分享。保存提供更好选择的人,我正在创建自定义操作来处理卸载。 NSIS 在他们的卸载策略中是一致的(默认情况下,无论如何)。知道那是什么,我可以计划。混乱,当然,但看起来不错。

【讨论】:

以上是关于(Un)在 WIX Burn 安装程序中安装 NSIS 包的主要内容,如果未能解决你的问题,请参考以下文章

WiX Burn:如何将安装程序可执行文件部署到某个位置?

自定义 WiX Burn 引导程序用户界面?

如何从包含多个 MSI 的 wix 自定义引导程序包中安装/卸载单个 msi,例如安装项目的添加/删除功能?

Wix Burn:自定义引导程序升级,但与旧版本并排安装

如何在 Wix 合并模块中安装字体

如何为 Wix Burn 安装程序包含完整的 .NET 先决条件