单击btn时在wix中打开txt文件

时间:2012-11-08 16:33:44

标签: wix wix3.6

我有一个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" />

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

2 个答案:

答案 0 :(得分:3)

您似乎正在尝试打开驻留在安装源中的文件。您对FxDependencies.txtFXDEP使用相同的值。

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

要做到这一点,您必须编写几个自定义操作:

  1. 第一个CA将文件解压缩到临时目录中,并将路径保存到属性FXDEPTEMPPATH
  2. 第二个CA使用FXDEPTEMPPATH在记事本中显示它。
  3. 另一种选择是在资源中编写一个包含FxDependencies.txt的小应用程序(.exe)。您将此.exe添加到MSI的二进制表中,然后从安装程序启动它而不是记事本。在这种情况下,MSI会自动将exe解压缩到一个临时目录中并启动它。在应用程序中,通过从资源中提取信息,在临时目录中创建一个新的文本文件,然后启动记事本以显示它。


    编辑: 从二进制表中读取文件的方法有很多种。请参阅以下链接以获取示例:

答案 1 :(得分:0)

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

  1. 验证先决条件
  2. 检查Windows安装程序版本
  3. 如果版本小于5,请调用自定义操作以创建文件夹($(sys.CURRENTDIR)\Resources\Files\
  4. 然后在按钮上单击,您可以调用自定义操作以启动txt文件