我正在尝试自动化安装过程,在该过程中,我卸载以前的版本并在顶部安装新版本。我应该如何测试(在我的引导程序中,用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/