我的应用程序调用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的进度条必须移到最后一个(右端)。” 如何编辑呢?你对我有什么想法吗?
答案 0 :(得分:1)
建议 :您可以尝试执行以下操作(find product 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卸载:Uninstalling an MSI file from the command line without using msiexec。您可以通过以下方式进行卸载: msiexec
, ARP
, WMI
, {{1 }} ,部署系统,例如 PowerShell
, SCCM
/ COM Automation, VBScript
或通过 DTF
以及其他一些选项。
msiexec.exe : hidden Windows cache folders
命令行有两种形式。添加了“ msiexec.exe
”和“ /quiet
”之类的“完整单词”开关的原始副本和后来的副本。原始命令行使用/noreboot
作为静音模式的开关。这是这两种口味的链接:MSIEXEC what is the difference between qn and quiet。
某些链接 :
答案 1 :(得分:0)
msiexec /passive /x ProductCode
这应该只给您ProgressBar UI。您还可以询问用户是要跳过重新启动还是要在卸载完成后始终强制重新启动。然后可以适当地添加 / norestart 或 / forcerestart 选项。