我正在使用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 所以解析它。
有没有更好的方法,而不是解析字符串。
答案 0 :(得分:0)
我也在MSDN论坛上发布了同样的问题并得到了答案。任何人都需要帮助,请访问以下链接
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/207c145a-60ff-4d68-878d-d0139b2b274c
由于