【问题标题】:Open txt file in wix when clicking btn单击btn时在wix中打开txt文件
【发布时间】:2012-11-08 16:33:43
【问题描述】:

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

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

【问题讨论】:

    标签: wix wix3.6


    【解决方案1】:

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

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

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

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

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


    编辑:有多种方法可以从二进制表中读取文件。有关示例,请参见以下链接:

    【讨论】:

    • 如何从二进制标签中提取文件?
    • @IoanaIonasek 我已经用有关如何从二进制表中读取文件的链接更新了我的答案。您仍然可以编写一个包含该文件的小应用程序并在记事本中打开它,记事本本身将存储在二进制表中。安装程序引擎将为您提取 .exe 并启动它。请务必使用静态链接来最小化该应用程序的依赖关系。 (当然,要运行基于 .Net 的应用程序,必须已安装 .Net。)
    • 谢谢!真的很有帮助 :D - 我在一个 diff proj 上试了一下,效果很好。在我使用可滚动文本的主要部分 - 我知道我很懒 :D
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 2017-05-13
      • 1970-01-01
      • 1970-01-01
      • 2019-12-24
      • 1970-01-01
      • 1970-01-01
      • 2022-07-16
      相关资源
      最近更新 更多