我的应用程序调用MSIEXEC来卸载运行。
logger->LogDebug("Actions: MsiUninstallExec()!");
System::Diagnostics::Process ^p = gcnew System::Diagnostics::Process();
p->StartInfo->FileName = "msiexec";
p->StartInfo->Arguments = "/x " + AppSetting::ProductCode;
p->Start();
/// -->>> Uninstall
/// -->> Choose restart or not.
/// -->>> Application Exit
当卸载完毕后,用户必须选择重新启动或没有完成这个过程。 但我的客户要求:“MSIEXEC的进度条必须移动到最后(右端)。” 如何编辑呢? 你对我有什么想法?
建议 :你可以尝试这样的事情( 找到产品GUID ):
msiexec.exe /X {PRODUCT-GUID} /QN REBOOT=ReallySuppress /L*V "C:\Temp\msilog.log"
快速命令行解释 :
/X {PRODUCT-GUID} = run uninstall sequence for specified product
/QN = run completely silently
/REBOOT=ReallySuppress = suppress reboot prompts
/L*V "C:\Temp\msilog.log" = verbose logging at specified path
替代方案 :有许多方法来调用MSI卸载: 卸载命令行的MSI文件,而无需使用MSIEXEC 。 您可以通过卸载: msiexec
, ARP
, WMI
, PowerShell
,部署系统,如SCCM
, VBScript
/ COM自动化, DTF
,或通过hidden Windows cache folders
,以及一些其他选项。
msiexec.exe的 :有两种口味msiexec.exe
命令行。 原来的一个,并且添加了“全字”开关,如后一个/quiet
和/noreboot
和喜欢。 原始命令行中使用/qn
作为无声模式的切换。 这里是链接到两个口味: MSIEXEC是什么QN和安静之间的区别 。
一些链接 :
- 一个MSI软件包的静默安装
- 我怎样才能找到一个已安装的MSI安装程序的产品GUID?
- 如何报道安静安装MSI安装状态
msiexec /passive /x ProductCode
这应该给你只是进度UI。 是否要卸载完成时跳过重启或总是强迫重新启动你也可以询问用户。 然后,可以适当添加/ norestart更新日志文件或/ forcerestart选项。