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

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

Dim proc As New Process()
proc.StartInfo.FileName =UninstallString
proc.Start() 
proc.WaitForExit()  
proc.Close()

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

C:\\ program files \\ someApp \\ uninstall.exe

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

我的Silverlight SDK UninstallString,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,启动设置“ 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,所以也要解析它。

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

#1楼 票数:0 已采纳

我也在MSDN论坛上发布了同样的问题,并得到了答案。 任何人都需要帮助,请访问下面的链接

http://social.msdn.microsoft.com/Forums/zh-CN/netfxbcl/thread/207c145a-60ff-4d68-878d-d0139b2b274c

谢谢

  ask by Sakhawat Ali translate from so

未解决问题?本站智能推荐:

1回复

从注册表卸载字符串总是一样吗?

我在这里只需要一点保证。 我正在创建一个基本的C#程序,除其他外,该程序将卸载并重新安装该程序的最新版本(我无法将此功能内置到程序本身中)。 我这样做的方式是: 在命令提示符过程中。 我有一些问题: 显然,您不知道该程序的历史记录(我也不是要告诉您事实),但是对于每个版本
1回复

Powershell 循环遍历每个用户配置文件以获取软件版本号,然后创建卸载字符串并运行命令

希望有人能给我一个关于如何继续处理剩余脚本的想法。 该脚本是从该构建中获取已安装 Chrome 的版本号 为卸载构建一个字符串,如下所示。 我被困在第二部分,获取版本号很好。 接下来的逻辑是什么,然后遍历每个用户配置文件以从 C:\\Users[username]\\appdata\\Loc
2回复

如何使用卸载路径卸载 MSI

我正在尝试获取一组应用程序的卸载路径并卸载它们。 到目前为止,我得到了卸载路径的列表。 但我正在努力卸载这些程序。 到目前为止,我的代码是。 这将返回以下结果: 我正在努力寻找执行这些卸载路径并实际卸载 MSI 的方法。 我曾尝试使用Invoke-Expression $Uninstal
2回复

如何在 C++ 中静默卸载 .exe

我有 UninstallString 并且我想静默卸载该程序,以便不涉及用户交互。 我有如下的 UninstallString : C:\\Program Files\\Notepad++\\uninstall.exe C:\\Program Files\\7-Zip\\Uninsta
1回复

使用 Powershell 卸载程序的语法错误

我正在尝试让我的通用卸载程序正常工作。 这是我的代码: 在我的示例中,我试图获得 Zoom 的输出。 我安装了 Zoom 客户端并安装了 Zoom Outlook 插件。 这是程序的输出: 我所知道的部分问题是 Zoom Outlook 插件没有任何与之关联的卸载字符串。 我假设它只是 Z
1回复

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

我正在使用此代码 (也尝试过此操作)要使用我的注册表中的“卸载”字符串来卸载程序,但是第一个链接的代码中存在一些错误。 林试图解决它,但我很难弄清楚文件名中的内容和参数中的内容。 我的UninstalString是: rundll32.exe dfshim.dll,ShArpMai
1回复

使用其GUID静默卸载软件

我想卸载仅提示UAC窗口且此后不显示任何UI的软件。 我正在使用msiexec.exe卸载它。 但是我该如何默默地做呢... 在静音模式下怎么可能
1回复

NSIS卸载程序不运行un.onInit

在我的.nsi文件中,我在un.onInit函数中有以下逻辑: 但是,从不显示messageBox(以及进程正在运行的消息)。 因此,我仔细阅读了许多文档,显然,运行静默模式可防止调用此方法,因此我向.nsi文件添加了SilentInstall normal和SilentUnInsta