问题标签 [uninstallstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3663 浏览

registry - HowTo:解析 UninstallString reg 条目

InHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\是我机器中已安装程序的列表(至少其中大部分)。在那里,有一个名为 UninstallString 的字符串值,它包含您需要运行才能卸载程序的内容。
问题不是每个安装程序都会写入相同类型的信息,但 Windows 知道如何解析该字符串以运行卸载程序。
我的问题是:有人知道如何解析那个字符串吗?这意味着它可能得到什么值?如果没有,我在哪里可以找到那种信息?我用谷歌搜索没有运气,我想我不是在寻找正确的条款。

0 投票
1 回答
1436 浏览

wix - WIX 生成的 MSI 的自定义卸载程序

我有一个从 WIX 脚本生成的 MSI。

我的问题类似于这个问题

我想创建一个自定义卸载程序,而不是使用默认的 MSI 卸载程序。

我正在考虑添加一个在 PublishProduct 之后或 InstallFinalize 之前执行的自定义操作,该操作只是去修改指定要使用的卸载字符串的注册表项。

我不担心与 SMS 或类似产品的兼容性。

你对这种方法有什么看法?

0 投票
1 回答
1942 浏览

.net - 卸载字符串

我正在使用 VB.NET 开发一个基于桌面的应用程序,类似于添加/删除程序。一切正常,直到我开始使用卸载功能。

现在我要做的是从注册表中获取特定应用程序的卸载字符串并使用 System.Diagnostics.Process 来运行 UninstallString。

后者我发现它仅适用于直接文件路径,我的意思是没有命令行参数,例如:

C:\程序文件\someApp\uninstall.exe

我列出了我机器上安装的所有应用程序的所有 UninstallStrings 列表。我发现很少有使用 MSI 安装的应用程序之类的东西,有些是带有 rundll32 的,很少有带有一些命令参数的直接文件路径,例如:

我的 Silverlight SDK 卸载字符串,MSI 示例

MsiExec.exe /X{2012098D-EEE9-4769-8DD3-B038050854D4}

我的 JetAudio UninstallString,RunDll32 示例

RunDll32 C:\PROGRA~1\COMMON~1\INSTAL~1\engine\6\INTEL3~1\Ctor.dll,LaunchSetup "C:\Program Files\InstallShield 安装信息{91F34319-08DE-457A-99C0-0BCDFAC145B9} \Setup.exe" -l0x9

我的 Google Chrome UninstallString,带有命令参数示例的直接文件路径

“C:\Program Files\Google\Chrome\Application\5.0.375.55\Installer\setup.exe”-卸载

我上面提到的代码不适用于这些。我做了一些字符串解析,将两件事与 UninstallString 分开,一个是文件名,另一个是参数。与 MSI 一样,文件名是 MSIEXEC.EXE,参数将是字符串的其余部分,对于 RunDLL32 相同,对于带有命令参数的直接文件路径也是如此。

现在我面临的是,每 2 或 3 天后我才知道这种类型的 unistallstring 也不起作用。为什么这不起作用,因为它是一种新类型,可能是abc C:\program files\someapp.exe -ddd所以也解析它。

有没有更好的方法来做到这一点,而不是解析字符串。

0 投票
3 回答
3260 浏览

c# - 使用 C# 执行卸载字符串

我在使用进程执行 uninstallString 时遇到问题,它并非在所有情况下都有效。我需要一个在任何情况下都可以运行的通用程序。

  • 我的一个想法是解析卸载字符串

代码:

  • 我的第二个想法是:

代码:

但它仍然不会涵盖所有情况。

所有情况的通用解决方案是什么?

0 投票
1 回答
993 浏览

c# - 在 C# 中使用 System.Diagnostic.Process 及其 UninstallString 卸载程序

我正在使用此代码 (也尝试过)使用我的注册表中的卸载字符串卸载程序,但第一个链接的代码中有一些错误。我正在尝试修复它,但我无法弄清楚文件名中的内容以及参数中的内容。我的 UninstalString 是:

rundll32.exe dfshim.dll,ShArpMaintain ItemMan.Client.application,Culture=neutral,PublicKeyToken=4f1069eb693dc232,processorArchitecture=msil

注册表中的目录是

CurrentUser\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\9e648bbdf5bc3053

我遇到问题的部分:

有了这个位,什么都不会发生。我尝试的所有其他方法都会引发错误。您将如何剪切/使用您的 uninstalString 卸载该程序

0 投票
1 回答
968 浏览

c# - 从注册表中卸载字符串总是一样的?

我在这里只需要一点保证。我正在创建一个基本的 C# 程序,除其他外,它将卸载并重新安装程序的最新版本(我无法将此功能构建到程序本身中)。我这样做的方式是:

在命令提示符过程中。我有一些问题:

  1. 显然您不知道该程序的历史(我也不告诉您真相),但是对于每个版本,卸载字符串通常每次都相同吗?它会改变吗?
  2. 是否有任何可能的方式使卸载字符串意外成为另一台计算机上不同程序的字符串?我不想卸载其他任何东西。

基本上我只想知道这是否安全。如果没有,或者如果有更好的方式以编程方式执行此操作,请告诉我!谢谢!

0 投票
1 回答
11282 浏览

vbscript - 尝试使用 VBScript 编写静默卸载脚本

我正在尝试编写脚本来卸载某些应用程序。我有脚本工作,但每个程序在运行时都会抛出一个提示。

我知道应用程序支持“/S”参数,因此可以进行静默卸载。我可以从命令提示符运行卸载 /s 命令,它工作正常。没有提示,它只是卸载。

我的问题是在脚本中调用 /S 参数。无论我如何尝试,我都会不断收到语法错误。我知道这只是我和我对引号和括号的不理解,但我有点厌倦了试图让它发挥作用。所有路径中都有空格的事实使问题更加复杂,这需要更多的那些无用的引号。希望有人能告诉我我做错了什么。

另外,我真的不知道我在用 VBS 做什么,所以如果你们都可以忽略脚本的丑陋,我将不胜感激。:-)

我还有一个关于“true”参数的问题。我的理解是,这表明应该在进行下一个操作之前完成当前操作。但卸载似乎同时运行。我是否正确理解“真实”参数?

静默卸载的命令是:

C:\Program Files\Juniper Networks\Network Connect 7.1.9\uninstall.exe /S

这是我没有“/ S”参数的脚本。

0 投票
1 回答
712 浏览

c# - 使用其 GUID 静默卸载软件

我想卸载只提示 UAC 窗口的软件,之后它不显示任何 UI。我正在使用 msiexec.exe 卸载它。但我怎么能默默地做到这一点......

如何在静音模式下成为可能

0 投票
4 回答
45857 浏览

apache - Apache 2.4 - 删除 | 删除 | 卸载

我已经在网上搜索了很长一段时间,但我找不到如何 完全删除 apache 2.4 。

使用:
Windows 7
c:\apache24\

我已经尝试了所有命令,但没有任何效果。

继续获得相同的结果(对于每个命令):

请注意,该服务仍在运行,
这意味着 apache 仍在工作,
我得到“它可以工作!” 在本地主机中。

0 投票
1 回答
842 浏览

nsis - NSIS 卸载程序不运行 un.onInit

在我的 .nsi 文件中,un.onInit函数中有以下逻辑:

但是,消息框(和进程正在运行消息)从未显示。所以我浏览了很多文档,显然运行静默模式会阻止调用此方法,因此我将其添加SilentInstall normalSilentUnInstall normal.nsi 文件中。但是,这也不起作用。

我尝试通过手动转到uninstall.exe并运行安装程序来调用卸载程序,该安装程序检查是否已经安装了一个版本以及是否有调用:

然而,这两个调用都不会触发到“正常”模式。那么我怎样才能让我的 un.onInit 函数被调用呢?

编辑:

正如有人要求提供整个文件,这里是. 我只复制了相关部分,但如果需要更多内容,请随时查看。请注意,整个文件已经很老了,我只是在更新它。