无法运行C#进程来卸载早期版本的InstallShield安装

时间:2019-04-12 23:58:30

标签: c# windows-installer msiexec installshield-2018

我们有大约20个先前版本的软件可以安装,需要先卸载才能安装新版本。其中大多数都是作为InstallScript MSI项目构建的,这很重要,因为msiexec /x{*ProductCode*}不适用于此项目类型。

您需要“记录”卸载响应文件,然后将其提供给调用以静默卸载。例如,假设我记录了一个名为response.iss的响应文件。要静默卸载此程序,我需要运行C:\Program Files (x86)\InstallShield Installation Information\{*ProductCodeGUID*}\setup.exe并作为参数/s /f1"*PathToResponseFile*\response.iss传递。

因此,在我们的InstallShield安装程序中,我调用了一个C#自定义操作,该操作可以确定要安装的版本,然后执行适当的命令进行卸载。 它在以前的19个版本中都可以正常运行,但是在一个版本(最后一个InstallScript MSI项目-我在此版本之后切换到Basic MSI安装程序)上无法以编程方式运行。如果我单步执行代码并将process.StartInfo.FileName和process.StartInfo.Arguments复制并粘贴到CMD窗口并运行它,它将很好地卸载,但是当我处理process.Start()和process.WaitForExit()时,它不会通过卸载。

几乎所有您需要知道的。如果您对这里的代码感兴趣:

enter image description here

0 个答案:

没有答案
相关问题