通过使用 copyfile 元素文件无法绑定到 msi 包中
-
05-07-2019 - |
题
我正在使用wix 3.0。我有一个文件夹名称“images”。所以我想将图像中的所有文件复制到msi包中。当我复制所有文件并将msi安装到另一台电脑时,它没有绑定图像。当我使用简单的文件元素时,文件绑定到 msi 包。所以我该怎么做,
尽快回复我
谢谢你萨米尔
解决方案
显然,您想要创建一个可以生成屏幕保护程序安装程序的应用程序,其中包括用户选择的许多图像文件 - 一种专门用于创建屏幕保护程序安装程序的专用 InstallShield 应用程序。
我首先会创建一个 模板 MSI 文件 (与Wix或其他类似)一起完成大部分工作。您不知道用户稍后将选择哪些文件,因此添加 ID 为“UserSelectedFiles”的占位符组件。将此模板MSI文件与您的应用程序分发。
然后,当用户想要生成新的安装程序时,首先复制模板。编辑复制的 msi,以便它也安装用户选择的文件。您可以在“部署工具基金会” API中找到的.NET类来完成此操作。这是wix自带的一组组件;看一眼 C:\program files\Windows Installer
XML v3\sdk
.
我只将 DTF API 用于一些简单的事情,例如这个示例,它计算 MSI 中的文件表条目:
var database = new Database(@"\path\to\some\file.msi");
var list = database.ExecuteQuery("SELECT FileName FROM File");
Console.WriteLine(list.Count);
你的情况会稍微复杂一些。你可能需要
- 生成一个包含图像文件的驾驶室档案,其中包含您在
Microsoft.Deployment.Compression.Cab
命名空间。 - 将出租车档案合并到MSI中
Database.Merge
- 在MSI的文件表中添加新条目
- 将产品代码更改为每个生成的 MSI 唯一的代码
- 等等
不隶属于 StackOverflow