【问题标题】:Wait for uninstaller to finish using batch等待卸载程序完成使用批处理
【发布时间】:2015-10-19 11:59:30
【问题描述】:

我想使用批处理卸载一些程序,并等待每个程序完成卸载,然后再执行其他程序。问题是其中一些卸载程序不会调用其他程序并且不在任务管理器中,因此 START /WAIT 不起作用。任何想法都会有所帮助。

【问题讨论】:

  • 如果这些程序是通过 .msi 包在内部安装的,那么也许可以使用 start /wait MsiExec.exe /X{5481F163-B9E5-30A8-8441-4DBBB87D6AA2} 例如。可以使用reg query找到确切的产品代码。
  • 他们不是。它们是自定义卸载程序,卸载过程中卸载程序甚至不在任务管理器中。我不确定它在调用什么程序。
  • 1.卸载字符串应该出现在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 中。 2. 该进程应该在任务管理器的processes 选项卡上可见。

标签: batch-file wait nsis uninstallation taskmanager


【解决方案1】:

假设您使用的是 Windows,并且这些程序是使用 .msi 包安装的,

卸载批处理文件中的程序就像使用 MSIEXEC 一样简单。有关使用 MSIEXEC 的完整文档,请访问 Microsoft Technet

要查找您要卸载的安装的 GUID,只需在命令提示符下使用 wmic:

wmic product get > C:\InstalledProgramsList.txt

然后导航到 C:\InstalledProgramsList.txt 并使用 ctrl + F 找到所需的产品和关联的 GUID

【讨论】:

  • 感谢您的快速回复。两件事:我在提供的链接中看不到我可以等到安装完成后再继续。此外,我的程序是 64 位的,使用的是未向 WMIC 注册的安装程序。
  • @Wajo357 如果您使用 msiexec 为 Windows 创建批处理脚本,则每个命令将在前一个命令完成后按顺序运行。此外,wmic product get 应该适用于以 .msi packages 安装的所有 x64 和 x86 应用程序
  • @Wajo357 啊,我看到您正在使用自定义安装程序。尝试搜索:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKEY_CLASSES_ROOT\Installer\Products
【解决方案2】:

好的。我想我明白了。这是我正在使用的代码,我在其中创建了一个等待任务完成的子例程。

:waitforuninstallation
timeout /T 1 /NOBREAK >nul
tasklist /FI "IMAGENAME eq %1" 2>NUL | find /I /N "%1">NUL
if %ERRORLEVEL% EQU 0 goto waitforuninstallation
exit /b

这可以使用:

call :waitforuninstallation PROGRAMNAME.exe

其中 PROGRAMNAME 是在任务管理器中运行的任务。 编辑:使子程序带有参数

【讨论】:

    【解决方案3】:

    NSIS 制作的免费安装程序有一个非常令人讨厌的趋势:Cisco Amp、Folding@Home、PsychoPy、Anaconda、PyCharm。卸载程序 exe 退出,名为 Un_A.exe 的东西接管并完成其余工作。在这种情况下,您必须等待该过程完成。

    powershell while (! (get-process Un_a -ea 0)) { sleep 1 }; 'waiting'; wait-process Un_a
    

    或者如果你想要un_a的退出码:

    powershell while (! ($proc = get-process Un_A -ea 0)) { sleep 1 }; $handle = $proc.handle; 'waiting'; wait-process Un_A; exit $proc.exitcode
    

    【讨论】:

      猜你喜欢
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-21
      相关资源
      最近更新 更多