通过使用copyfile元素文件不能绑定到msi包

时间:2009-11-26 10:48:05

标签: vb.net wix windows-installer file-copying

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

很快回复我

感谢你 萨米尔

1 个答案:

答案 0 :(得分:1)

显然,您希望创建一个可以生成屏幕保护程序安装程序的应用程序,该安装程序包含用户选择的一些图像文件 - 一种专门用于创建屏幕保护程序安装程序的InstallShield应用程序。

我首先要创建一个模板MSI文件(使用wix     或其他东西),大部分     工作。您不知道用户稍后要选择哪些文件,因此添加ID为“UserSelectedFiles”的占位符组件。分发这个     模板MSI文件与您的应用程序。

然后,当用户想要生成一个     新的安装程序,从复制开始     模板。编辑复制的msi,以便它还安装用户选择的文件。您可以使用.NET类执行此操作     你可以在“部署中找到     tools foundation“API。这是wix附带的一组程序集;请看一下     C:\program files\Windows Installer XML v3\sdk

我只使用DTF API来处理一些简单的事情,例如这个计算MSI中的File表条目的例子:

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
  • 向File表添加新条目 MSI
  • 将产品代码更改为每个生成的MSI的唯一内容
  • 诸如此类

为了了解MSI文件的内容及其编辑方式,我建议您先使用orcamsidb工具进行一些操作。