1

我有一个 wix 项目,我在其中添加了一个自定义窗口,用于检查运行应用程序所需的依赖项。该窗口出现在许可协议之后。一切正常,通过自定义操作检查依赖关系,如果 Windows 安装程序高于版本 5,则会出现指向官方网站的超链接。

如果版本较低,我想单击 btn“显示依赖项”并显示带有链接的 txt 文件。我在打开记事本和包含文件的属性下面有自定义操作。

代码:

<Property Id="FXDEP" Value="$(sys.CURRENTDIR)\Resources\Files\FxDependencies.txt" />
<Property Id='NOTEPAD'>NOTEPAD.EXE</Property>
<CustomAction Id='LaunchDependencies' Property='NOTEPAD' ExeCommand='[FXDEP]' Return='asyncNoWait' />

问题是在开发机器上它可以工作,因为它找到了路径,但在其他机器上它当然会失败。我应该如何告诉 wix 维护这个文件并打开它?

我尝试将文件放入

<Binary Id="FxDependencies.txt" SourceFile="$(sys.CURRENTDIR)\Resources\Files\FxDependencies.txt" />

但自定义操作无法识别它。

4

2 回答 2

3

您似乎正在尝试打开位于安装源中的文件。FxDependencies.txt和使用相同的值FXDEP

您的具有依赖关系的文本文件位于Binary安装程序的表中,要使用它,您必须将其解压缩到一个临时目录中,然后启动记事本来显示它。

为此,您必须编写几个自定义操作:

  1. 第一个 CA 将文件提取到临时目录中,并将路径保存到属性中,FXDEPTEMPPATH.
  2. 第二个 CA 用于FXDEPTEMPPATH在记事本中显示它。

FxDependencies.txt另一种选择是编写一个小型应用程序 (.exe),例如在资源中包含您的 . 您将此 .exe 添加到 MSI 的二进制表中,然后从安装程序中启动它而不是记事本。在这种情况下,MSI 会自动将 exe 提取到一个临时目录并启动它。在您的应用程序中,通过从资源中提取信息,在临时目录中创建一个新的文本文件,然后启动记事本来显示它。


编辑:有多种方法可以从 Binary table 读取文件。有关示例,请参见以下链接:

于 2012-11-11T09:43:43.317 回答
0

我建议您在自定义操作中创建文件夹。所以,

  1. 验证先决条件
  2. 检查 Windows 安装程序版本
  3. 如果版本小于 5,则调用自定义操作来创建文件夹 ( $(sys.CURRENTDIR)\Resources\Files\)
  4. 然后单击按钮,您可以调用自定义操作来启动 txt 文件
于 2012-11-10T14:18:17.373 回答