【问题标题】:uninstall string卸载字符串
【发布时间】:2011-02-25 12:09:19
【问题描述】:

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

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

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

后来我发现它只适用于直接文件路径,我的意思是没有像这样的命令行参数:

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

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

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

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

我的 JetAudio 卸载字符串,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 卸载字符串,带有命令参数示例的直接文件路径

“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 所以也解析它。

有没有比解析字符串更好的方法。

【问题讨论】:

  • 我不明白你在最后一部分中所说的“新类型”是什么意思。 “不工作”是什么意思?你有例外吗?程序是否启动但参数错误?除此之外,尝试在 ProcessStartInfo 中将 UseShellExecute 设置为 false。
  • 长话短说,有没有比进行字符串解析更好的方法?我的意思是只给出 unistallstring 并执行该命令?
  • 和新类型的意思是,就像我处理 msiexec、rundll32 和 exe 一样。但将来可能会出现其他东西,比如 msiexec123 或任何东西。

标签: .net uninstallstring


【解决方案1】:

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

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

谢谢

【讨论】:

    猜你喜欢
    • 2011-09-10
    • 2011-11-10
    • 2023-03-11
    • 2021-12-01
    • 1970-01-01
    • 2019-10-22
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多