0

我正在编写一个应用程序来从网络中删除旧版本的 Qmuzik ERP 软件并安装新版本。我已经使用 C# 中的 Process 方法通过 cmd 命令执行 msi 来安装新版本。我使用的命令是:

msiexec /qn /i "MSI Path" 

这很好用。

我这样做的原因是因为有不止一个 msi 必须按顺序运行。使用 process 方法,我可以观察进程并检测它何时完成并执行序列中的下一个 msi。所有这一切都在用户电脑上悄然发生。

问题是,在我安装新版本之前,我必须卸载以前的版本。旧版本是使用 exe 安装文件安装到机器上的。我尝试将exe文件转换为msi并使用msiexec通过命令行卸载,但它对已安装exe的实例没有影响,而不是转换后的msi(即整个网络)

我可以在 cmd 中使用任何命令来卸载使用 exe 安装的这些实例吗?

4

3 回答 3

4

当您在 Windows 中安装程序时,会创建一个用于卸载的注册表项,其中包含多个值,其中包括UninstallString值,这是您单击Remove时添加或删除程序使用的命令行。

父键是:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

而这些UninstallStrings通常具有以下格式:

MsiExec.exe /I{0826F9E4-787E-481D-83E0-BC6A57B056D5}

为了完成您尝试执行的操作,您必须创建一个RegistryKey 对象,读取您要删除的应用程序的UninstallString值并运行命令行。

更多信息在这里

于 2012-06-07T13:30:35.353 回答
0

您可以使用 revo 卸载程序,不是为了它的卸载功能,而是为了它的主视图,它显示了您的应用程序的注册卸载字符串。

但这只是一个起点。每个安装引擎都可以有自己的卸载字符串。你必须找到正确的,如果你足够幸运的话(尝试 /quiet、/passive 等,直到你找到正确的)。

于 2012-06-07T19:01:46.200 回答
-3

转到文件路径,查找需要卸载的 .exe。在命令提示符下打开 .exe 所在的路径并执行“xxxx.exe --uninstall”。

于 2017-08-21T07:18:49.747 回答