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