卸载字符串

时间:2010-05-29 15:08:12

标签: .net uninstallstring

我正在使用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 \发动机\ 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”-uninstall

我上面提到的代码对这些代码不起作用。我做了一些字符串解析,从UninstallString中分离出两个东西,一个是Filename,另一个是Arguments。与MSI类似,filename是MSIEXEC.EXE,参数将是字符串的其余部分,对于RunDLL32是相同的,对于带有命令参数的直接文件路径也是如此。

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

有没有更好的方法,而不是解析字符串。

1 个答案:

答案 0 :(得分:0)

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

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

由于