自定义msiexec进度栏?

时间:2018-09-19 07:40:37

标签: c# c++ c++-cli command-line-interface msiexec

我的应用程序调用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的进度条必须移到最后一个(右端)。” 如何编辑呢?你对我有什么想法吗?

enter image description here

2 个答案:

答案 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 选项。