2

我在一个小范围内。有问题的程序可以安装在程序文件目录(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,关于如何编写此卸载脚本的任何想法,我不确定如何让某些东西正常工作?我对任何事情都持开放态度。我有两天的时间来解决这个问题,我处于恐慌模式......

任何关于代码的想法或帮助将不胜感激。

问候,布赖恩

4

3 回答 3

4

wmic可以调用卸载程序。我还没有尝试过,但我认为它可能会起作用。

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

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

wmic product get name | sort

并寻找它。您还可以使用 SQL 通配符进行卸载。

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 通配符。如果您的搜索字符串可能与环境或脚本变量冲突,请使用双百分号指定文字百分号,例如%%j2se%%。)

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

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

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

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

于 2013-02-13T22:56:22.970 回答
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该键中的内容通常会为您提供您正在寻找的确切命令(您可以在脚本中运行)。

如果您在这些注册表位置中找不到任何相关内容,则可能是通过解压缩文件“安装”了它。因为您提到通过Control Panel将其删除,所以我认为这可能不是这种情况;如果它在那里的程序列表中,它应该在我提到的注册表项之一中。

然后在.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)
于 2015-03-25T17:13:29.143 回答
0

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

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

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

于 2015-09-17T12:46:01.627 回答