如何通过批处理文件创建脚本,如果程序安装在Windows 7 64位或32位上,将卸载该程序

时间:2013-02-13 22:09:07

标签: windows-7 batch-file windows-xp uninstall

我陷入了困境。有问题的程序可以安装在程序文件目录(64位)或X86路径中。该程序已安装在200多台机器上。我相当确定默认安装路径是X86,因为这是默认设置。我不确定,必须涵盖两种情况。安装它的原始系统管理员没有使用.msi所以我留下了我发现的“”C:\ Program Files \ InstallShield安装信息{78AC336D-25F6-4916-A711-2EA2F69E0319} \ setup .exe“作为一个实用程序提供的远程卸载我发现的应用程序的命令。没有工作,我不能试图推出它,希望它能够工作。

鉴于此问题,是否有办法通过脚本卸载此程序,该脚本将检查程序文件和X86路径并根据位置卸载?或者,是否有一个脚本,只需要解决卸载程序,无论是否担心X86 /程序原始安装位置。我只需要在所有这些机器上卸载它。安装.bat很好。我不能做的只是通过32或64位机器的脚本获取卸载X应用程序的窗口。

我已经尝试了MsiExec.exe / X {78AC336D-25F6-4916-A711-2EA2F69E0319} / quiet,没有去。我这次可以尝试安装.msi但是丢失了,我的知识受限于脚本或任何卸载脚本来告诉“最终用户”而不会让他们混淆只是点击这里。我可以告诉他们去控制面板等等。但是他们会迷路....典型的。

有关如何编写此卸载脚本的任何想法都不是原始的.msi,我不知道如何使某些工作正常?我对任何事都持开放态度。我有两天时间来解决这个问题,我处于恐慌模式......

非常感谢任何有关代码的想法或帮助。

此致 布赖恩

3 个答案:

答案 0 :(得分:3)

wmic可以调用卸载程序。我没试过这个,但我认为它可能有用。

wmic /node:computername /user:adminuser /password:password product where name="name of application" call uninstall

如果您不确切知道程序自己调用的内容,请执行

wmic product get name | sort

并寻找它。您也可以使用SQL-ish通配符卸载。

wmic /node:computername /user:adminuser /password:password product where "name like '%j2se%'" call uninstall

...例如,会对*j2se*执行不区分大小写的搜索,并卸载“J2SE Runtime Environment 5.0 Update 12”。 (请注意,在上面的示例中,%j2se%不是环境变量,而是单词“j2se”,每端都带有SQL-ish通配符。如果搜索字符串可能与环境或脚本变量冲突,请使用双倍百分比指定文字百分号,如%%j2se%%。)

如果在完成卸载之前wmic提示y/n确认,请尝试以下操作:

echo y | wmic /node:computername /user:adminuser /password:password product where name="whatever" call uninstall

...在它问之前将y传递给它。

我没有测试过这个,但无论如何它值得一试。如果它在一台计算机上运行,​​那么您可以使用for循环遍历包含组织内所有计算机名称的文本文件,或者将其放在域策略登录脚本中。

答案 1 :(得分:2)

假设您正在处理 Windows 7 x64 以及先前使用某种安装程序安装的内容,您可以打开 regedit 并搜索下的密钥

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall

(引用 32位程序)作为程序名称的一部分,或

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

(如果它实际上是64位程序)。

如果您在其中一个中找到与您的程序匹配的内容,则该键中UninstallString的内容通常会为您提供您正在寻找的确切命令(可以在脚本中运行)。

如果您在这些注册表位置找不到任何相关内容,则可能已安装"通过解压缩文件。因为您提到通过控制面板删除它,所以我认为这可能不是案例;如果它在那里的程序列表中,它应该在我提到的一个注册表项中。

然后在 .bat 脚本中执行

if exist "c:\program files\whatever\program.exe" (place UninstallString contents here)
if exist "c:\program files (x86)\whatever\program.exe" (place UninstallString contents here)

答案 2 :(得分:0)

根据我的经验,要在脚本中使用wmic,您需要获得嵌套引用权:

wmic product where "name = 'Windows Azure Authoring Tools - v2.3'" call uninstall /nointeractive 

引用查询和名称。但是wmic只会卸载通过Windows安装程序安装的东西。