我正在尝试自动化安装过程,在该过程中,我卸载以前的版本并在顶部安装新版本。我应该如何测试(在我的引导程序中,用C#编写)卸载是否成功?

当前,这就是我启动卸载的方式。

Process p = Process.Start("msiexec", /*various switches*/);
p.WaitForExit();


我目前还与动态多个实例纠缠不清,这真的使我大失所望,因此即使不是不可能,也很难在WiX内处理此问题。

最佳答案

您可以使用Windows Installer API,而不是通过msiexec调用Windows Installer。您可以通过P / Invoke,激活COM接口或通过WiX的DTF包装器库来实现。用于删除产品的特定功能是MsiConfigureProductEx

使用DTF,您可以这样做:

Installer.SetInternalUI(InstallUIOptions.Silent);
Installer.SetExternalUI(UiHandler, InstallLogModes.Verbose);
Installer.EnableLog(InstallLogModes.None, null);
Installer.ConfigureProduct(productCode, 0, InstallState.Removed, "");
Console.WriteLine("RebootRequired: {0}   RebootInitiated: {1}", Installer.RebootRequired, Installer.RebootInitiated);


UiHandler委托允许该应用监视进度。如果有错误,DTF会引发异常。

关于c# - 检查成功卸载,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17149811/

10-10 17:04