WiX自定义操作 - MSI复制本身

时间:2012-07-13 12:43:00

标签: wix custom-action

有人可以帮助我在MSI中构建自定义操作,该操作会在成功安装到某个X位置后自行复制。 我已经看到它可以使用.exe完成,但我只想用CA.DLL(C#)来完成,因为这个exe将是一个开销。

1 个答案:

答案 0 :(得分:2)

这是一个示例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"