Installshield静默卸载在命令行中不起作用

Posted

技术标签:

【中文标题】Installshield静默卸载在命令行中不起作用【英文标题】:Installshield Silent Uninstall not working at Command Line 【发布时间】:2012-07-10 09:37:48 【问题描述】:

我们有一个 2006 年的旧应用程序,我们想使用组策略在命令行中卸载,但我无法让静默卸载工作。

这行得通。当然需要点击下一步卸载:

 "C:\App\Setup.exe" /uninst

但事实并非如此。我在几秒钟内看到了一个沙漏,但应用程序没有被卸载。

 "C:\App\Setup.exe" /uninst /s

我也尝试了一些 VBScript,但没有成功。他们发现列出的应用程序但卸载失败。我不太熟悉这个过程应该如何工作。

【问题讨论】:

【参考方案1】:

还有另一种卸载应用程序的方法,即在注册表中搜索并使用 UninstallString(此示例代码在 windows 10 上使用 powershell):

# Get all installed apps from Registry
$Apps = @()
$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*" # 32 Bit
$Apps += Get-ItemProperty "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"             # 64 Bit

# Uninstall My App
$my_app = $Apps | Where-Object$_.DisplayName -eq "The Name Of My App"
$uninstall_string = " /C " + $my_app.UninstallString+' /S'
Start-Process -FilePath "cmd.exe" -ArgumentList $uninstall_string -Wait

如果您不知道应用程序的确切完整显示名称,可以将“应用程序”数组打印到文件中,然后在那里搜索:

$Apps | Out-File C:\filename.txt

【讨论】:

【参考方案2】:

我为此苦苦挣扎了很长时间,所以把它贴在这里以防其他人偶然发现它。

如果您碰巧有一个使用旧版Package-For-The-Web 格式的安装程序,那么您需要使用参数-a 将其他参数传递给提取的安装文件。

记录(卸载)安装文件(手动点击安装程序):

.\DWG2PDF2019.exe -a /r /f1"c:\app\dwg2019_install.iss"
.\DWG2PDF2019.exe -a /r /f1"c:\app\dwg2019_uninstall.iss"

静默(卸载)安装:

.\DWG2PDF2019.exe -s -a /s /f1"c:\app\dwg2019_install.iss"
.\DWG2PDF2019.exe -s -a /s /f1"c:\app\dwg2019_uninstall.iss"

来源:https://help.hcltechsw.com/caa/3.0/topics/appacc_silent_install_t.html

【讨论】:

【参考方案3】:

我一直在使用静默卸载程序苦苦挣扎,终于找到了一个在大多数情况下都适用于我的解决方案,适用于 InstallShield v6 和 v7。

1. 首先(如上所述),您必须生成一个 InstallShield 响应文件(例如,uninstall.iss)。为此,您必须使用参数启动 setup.exe:

> setup.exe -x -r -f1"C:\Your\Installer\Location\uninstall.iss"

这将通过正常的卸载向导并为您生成一个响应文件:uninstall.iss

2.然后,在尝试您的静默卸载程序之前,我想您应该重新安装该软件。

3.最后,运行您的静默卸载程序,播放最近生成的响应文件:

> setup.exe -x -s -l0x9 -ARP -f1"C:\Your\Installer\Location\uninstall.iss"

就是这样。

现在,一些重要的注意事项:

注意 1:我正在使用不是我自己构建的第 3 方安装包。

注意 2: 我使用破折号 (-) 而不是斜杠 (/) 来定义参数。出于某种原因,它不适用于我的斜杠。奇怪但真实。

注意 3:-ARP-l 开关是某些安装包管理所必需的从添加/删除程序列表中删除软件并相应地预设默认输入语言。

成功的静默卸载完全取决于正确的参数! 因此,请继续探索,正确的参数会因特定的包和安装程序版本而异。

希望我的意见对您有所帮助。

【讨论】:

【参考方案4】:

试试这个,使用用于安装的原始 setup.exe 版本

"C:\App\Setup.exe" /x /s /v/qn

【讨论】:

您能解释一下每个选项的含义吗?或者也许提供一个解释这一切的链接? /x => 卸载; /s => 静音; /v => 将以下数据 (/qn) 作为参数传递给内部安装程序【参考方案5】:

试试 格式:Setup.exe MYour Product GUID /s /f1[Full path]\*.iss 用于创建用于卸载的 ISS 文件。 从 Stephanie 的示例中,我认为它缺少 GUID。

开发者网站@Creating the Response File有一个很好的链接。

试试看然后告诉我们,

汤米·奎

【讨论】:

【参考方案6】:

您需要先创建一个 ISS 响应文件以静默删除您的应用程序,

    创建响应文件: C:\App\Setup.exe /r /f1c:\app\uninstall1.iss 您将被要求卸载,....也许回复其他窗口。 然后你的应用程序将被卸载,你会得到一个新的响应文件 c:\app\uninstall1.iss

    接下来,如果您想在另一台计算机上静默删除此应用程序: 启动:C:\App\Setup.exe" /s /f1c:\app\uninstall1.iss

欲了解更多信息,请参阅:

http://www.itninja.com/blog/view/installshield-setup-silent-installation-switches

最好的问候, 斯蒂芬

【讨论】:

我赞成你的回答,但不幸的是,这种方法对我不起作用。您的第一个语句在对话框中起作用,而不是在静默模式下的第二个语句。安装程序是否可能没有此功能?

以上是关于Installshield静默卸载在命令行中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

退格在 sqlplus 命令行中不起作用

Argparse 教程示例在 Windows 命令行中不起作用

require_once 在命令行中不起作用

如何在InstallShield项目中以静默方式安装msi文件

Xamarin 形式;条件编译符号在 MSBUILD 命令行中不起作用

身份验证在 ngrok 上的 PuTTY 命令行中不起作用