MSI Build uninstall-已删除已安装的目录

时间:2018-03-09 09:20:15

标签: build msbuild windows-installer installshield msiexec

我为我们的应用程序创建了MSI构建包。在此安装之后,我们在安装程序类的已提交事件中在单独的进程中触发了另一个依赖驱动程序软件,如下所示,

Process.Start("驱动软件路径")

我们正面临一个问题,安装目录(它是空的)文件夹在卸载时没有删除。实际上,就像安装一样,我们通过覆盖安装程序类的Uninstall方法在单独的进程中触发了相关驱动程序软件的卸载。

任何人,请帮助我克服这个问题?我怎么能删除已安装的目录?

我无法更改安装程序,因为我们知道在另一个安装过程中我们无法处理另一个安装/卸载。

1 个答案:

答案 0 :(得分:1)

您正在MSI中运行非MSI驱动程序安装EXE?正确?或者它可能是一个包裹在EXE中的MSI?

您有 Installshield Premier 吗?您可以使用套件项目并在安装MSI之前(或之后)通过引导程序安装EXE吗?我老实说从来没有使用过这个功能,但按顺序运行设置就是它的用途。众所周知,开启EXE文件的MSI文件中的嵌入式自定义操作是不可靠的。这是 - 在我看来 - 如果你运行托管代码(我认为你是),尤其如此。

从长远来看,托管代码可能会产生更安全的自定义操作代码(基于CAS的安全性),但是现在它似乎会导致不必要的运行时依赖性 - 特别是对于非常大规模的分发(全局分发)针对各种Windows版本(Vista,7,8,10)。

我被告知需要一段时间才能适应Installshield的套件功能,但也许它对您更好?您可以按顺序运行EXE文件,MSI文件,修补程序和zip。一些摆弄定义卸载和升级行为我想和很多测试。我非常确定企业应用程序包装商会很高兴看到套件而不是MSI,其中嵌入了许多奇怪的东西。

更新:编译套件setup.exe文件后,可按照此处所述提取它:Regarding silent installation using Setup.exe generated using Installshield 2013 (.issuite) project file

Installshield Suite Project

或者,您可以尝试解压缩驱动程序设置的setup.exe文件,并将驱动程序作为常规MSI组件安装,然后运行DPinst.exe来安装/卸载驱动程序(来自DIFx的工具)。也非常笨重 - 尤其是当您需要包含卸载时。

您的驱动程序设置可能已经使用了DPInst.exe。我会检查你是否可以从EXE中提取MSI并使用它而不是EXE来包含在套件项目中。有关如何处理setup.exe文件(提取,运行时参数等等)的一些提示:Extract MSI from EXE

WiX在其扩展程序之一中有Driver element来处理驱动程序安装。我从来没有机会测试它。