WiX Custom Action - MSI копирует себя

Может ли кто-нибудь помочь мне создать пользовательское действие в MSI, которое будет копировать себя после успешной установки в каком-либо X месте. Я уже видел, что это можно сделать с помощью.exe, но я хочу сделать это только с CA.DLL (C#), так как этот exe будет накладные расходы.

1 ответ

Решение

Вот пример сценария VB, который найдет установленный продукт по имени и скопирует кэшированную копию MSI. Это будет работать в Windows 7 и более поздних версиях, так как полный MSI кэшируется, а все встроенные cab-файлы остаются в MSI. Вы просто получаете MSI без полезной нагрузки на старых системах.

Dim installer, products, product, productCode
Set installer = Wscript.CreateObject("WindowsInstaller.Installer")

For Each productCode In installer.Products
  If InStr(1, LCase(installer.ProductInfo(productCode, "ProductName")), LCase("My Product Name")) Then Exit For
Next

If IsEmpty(productCode) Then Wscript.Quit 2

Set products = installer.ProductsEx(productCode, "", 7)
filesys.copyFile products(0).InstallProperty("LocalPackage"), "c:\path\to\newcopy.msi"
Другие вопросы по тегам