我正在编写一个应用程序,用于从网络中删除旧版本的Qmuzik ERP软件并安装新版本。我已经使用C#中的Process方法通过cmd命令执行msi来安装新版本。我使用的命令是:
msiexec /qn /i "MSI Path"
这很好用。
我这样做的原因是因为必须按顺序运行多个msi。使用过程方法,我可以观察过程并检测它何时完成并执行序列中的下一个msi。所有这些都安静地发生在用户的电脑上。
问题是,在我安装新版本之前,我必须卸载以前的版本。使用exe安装文件将旧版本安装到计算机上。我已经尝试将exe文件转换为msi并使用msiexec通过命令行卸载,但它对已经安装了exe而不是转换后的msi(整个网络)的实例没有影响
我是否可以在cmd中使用任何Command来卸载使用exe安装的这些实例?
答案 0 :(得分:4)
在Windows中安装程序时,会创建一个用于卸载的注册表项,其中包含多个值,其中包括 UninstallString 值,该值是添加或删除程序点击删除时使用。
父键是:
HKEY_LOCAL_MACHINE \ SOFTWARE \微软\的Windows \ CurrentVersion \卸载
这些 UninstallStrings 通常具有以下格式:
MsiExec.exe / I {0826F9E4-787E-481D-83E0-BC6A57B056D5}
为了完成您要执行的操作,您必须创建RegistryKey object,读取要删除的应用程序的 UninstallString 值并运行命令行。< / p>
更多信息here。
答案 1 :(得分:1)
您可以使用revo卸载程序,而不是其卸载功能,但是对于其主视图,它会显示应用程序的已注册卸载字符串。
但这只是一个起点。每个安装引擎都可以拥有自己的卸载字符串。你必须找到正确的,如果你足够幸运它存在(尝试/安静,/被动等,直到找到正确的那个)。
答案 2 :(得分:-2)
转到FIle Path,查找需要卸载的.exe文件。在命令提示符下打开.exe的路径并执行&#34; xxxx.exe --uninstall&#34;。