2009-11-26 61 views
1

我使用的是wix 3.0.i有一个文件夹名称“images”.so我想将所有文件从图像复制到msi package.when我复制所有文件和将msi安装到另一台PC,然后它不绑定图像。而当我使用简单的文件元素,然后将文件绑定到msi包。所以我应该怎么做,通过使用copyfile元素文件不能绑定到msi包

回复我很快

感谢你 萨米尔

+0

你的问题很混乱。对于初学者来说,目前还不清楚为什么要使用而不是常规的元素。您想要复制的文件是否已经存在于目标系统上? – 2009-11-26 12:00:36

+0

我想使用复制文件元素,因为我不知道有多少图像将存储到folder.All图像文件存储到图像folder.so所有图像动态。 – Samir 2009-11-26 12:14:15

+0

我想要什么,我想创建屏幕保护程序的动态,其中用户可以从他的电脑中选择多个图像,然后自动生成一个SWF文件。我创建了一个窗体,其中我称之为swf文件以及用户上传的图像。点击生成按钮后,应生成一个msi文件,用户可以将其安装到个人电脑上。 – Samir 2009-11-26 12:29:13

回答

1

显然,你要创建一个可以生成一个屏幕保护程序的安装程序,包括由用户—选择了一些图像文件的应用一种专门的InstallShield应用程序,仅用于创建屏幕保护程序安装程序。

我会先创建一个模板MSI文件(带威克斯 或别的东西),做大部分的 工作。您不知道用户稍后将选择哪些文件,因此请添加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 命名空间中找到类图像文件CAB压缩包。
  • 合并CAB压缩包到微星 与Database.Merge
  • 添加新条目到文件表中的MSI
  • 变化产生的MSI
  • 诸如此类
的产品代码,以独特的每个东西

为了解MSI文件的内容以及它如何编辑,我建议你先用orcamsidb工具玩一下。

相关问题