Сохранять путь MSI при копировании в установщик Windows - PullRequest
1 голос
/ 09 ноября 2019

В настоящее время я занимаюсь разработкой проекта C #, в котором есть проект программы установки. В процессе установки есть ли способ получить доступ к пути (особенно к имени) скопированного файла MSI (он кэшируется в C: \ Windows \ Installer)?

Я хотел бы сохранить его где-нибудь втекстовый файл, чтобы можно было удалить мое приложение непосредственно из формы.

1 Ответ

1 голос
/ 09 ноября 2019

Удаление : нет необходимости обращаться к этому файлу напрямую, существует множество способов удаления без использования кэшированного имени файла: Удаление MSIфайл из командной строки без использования msiexec .

Самый простой - просто удалить по коду продукта :

msiexec.exe /x {PRODUCT-CODE-1111-1111-11111111111X}

И вы можете удалить по коду обновления ( 2 ) или по имени :


Вы не пытаетесь удалить приложение, которое запускается из собственного графического интерфейса, не так ли? :-) Нарушение закона. Нарушение закона. Не пытался бы это сделать.


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

Local Cache Path


Ссылки :

...