1

我正在使用 wix 3.0。我有一个文件夹名称“图像”。所以我想将图像中的所有文件复制到 msi 包中。当我复制所有文件并将 msi 安装到另一台 PC 时,它没有绑定图像。当我使用简单的文件元素时,文件将绑定到 msi 包。所以我该怎么做,

尽快回复我

谢谢你萨米尔

4

1 回答 1

1

显然,您想要创建一个可以生成屏幕保护程序安装程序的应用程序,其中包括用户选择的许多图像文件——一种专门用于创建屏幕保护程序安装程序的 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);

你的情况会有点复杂。你可能不得不

  • 生成一个 CAB 存档,其中包含您在 Microsoft.Deployment.Compression.Cab 命名空间中找到的类的图像文件。
  • 将 CAB 存档合并到 msi 中Database.Merge
  • 向 MSI 的文件表添加新条目
  • 将产品代码更改为每个生成的 MSI 的唯一代码
  • 等等

要了解 MSI 文件的内容以及如何对其进行编辑,我建议您首先使用orcamsidb工具进行一些尝试。

于 2009-11-26T15:08:33.390 回答