【发布时间】:2019-11-08 23:24:16
【问题描述】:
我目前正在开发一个包含安装程序项目的 C# 项目。在安装过程中,有什么方法可以访问复制的 MSI 文件的路径(尤其是名称)(它被缓存在 C:\Windows\Installer 中)?
我想将其存储在文本文件中的某个位置,以便能够直接从表单中卸载我的应用程序。
【问题讨论】:
标签: c# windows-installer installation
我目前正在开发一个包含安装程序项目的 C# 项目。在安装过程中,有什么方法可以访问复制的 MSI 文件的路径(尤其是名称)(它被缓存在 C:\Windows\Installer 中)?
我想将其存储在文本文件中的某个位置,以便能够直接从表单中卸载我的应用程序。
【问题讨论】:
标签: c# windows-installer installation
卸载:不需要直接访问该文件,有很多方法可以卸载而不使用缓存的文件名: Uninstalling an MSI file from the command line without using msiexec.
最简单的就是卸载by product code:
msiexec.exe /x {PRODUCT-CODE-1111-1111-11111111111X}
你可以卸载by upgrade code(2),或者by name:
您不会尝试卸载从其自己的 GUI 运行的应用程序,是吗? :-) 触犯法律。触犯法律。不会尝试。
LocalPath:还有几种方法可以通过 MSI API 检索本地缓存路径:
On Error Resume Next
Set installer = CreateObject("WindowsInstaller.Installer")
' The product name you search for:
search = "Windows SDK EULA"
For Each product In installer.ProductsEx("", "", 7)
name = product.InstallProperty("ProductName")
cachepath=product.InstallProperty("LocalPackage")
If name = search Then
MsgBox name + ": " + cachepath
Exit For
End If
Next
链接:
【讨论】: