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静默卸载在命令行中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Argparse 教程示例在 Windows 命令行中不起作用
如何在InstallShield项目中以静默方式安装msi文件