0

我有一个 Wix 情况,似乎它的解决方案可能是几个步骤的组合。我只是不知道这些步骤是什么或如何构建它们。

我的安装取决于正在安装的另一个程序的某个版本(例如,OtherApp v2.1.6)。我需要将其指定为启动条件。

棘手的部分是,在 OtherApp 安装中指定该版本的唯一位置是在文本文件 (version.dat) 中。所以我需要编写一个自定义操作来从 dat 文件中读取该版本字符串并将其分配给属性或条件,所有这些都在启动条件之前。

我尝试了一个批处理文件来打开该文本文件并将找到的版本与作为参数传递到批处理文件中的版本进行比较。如果版本相同或更高(假设向后兼容),批处理文件将返回 0,如果版本较旧,则返回 1。但是,我无法获得正确执行批处理文件的自定义操作。

我也尝试过使用 VBScript 的不同方法,但均未成功。

任何人都可以就我应该如何设置这个场景提供任何见解吗?我以为我知道,但我发现我一点头绪都没有。

谢谢你的帮助!

4

1 回答 1

1

你走对了。读取 TXT 文件的自定义操作必须立即执行并在 LaunchCondition 标准操作之前运行。您应该在InstallUISequenceInstallExecuteSequence这两个序列中安排此自定义操作- 如果您的安装在安静或基本 UI 模式下运行,则仅考虑 InstallExecuteSequence,否则两个序列都会运行。该自定义操作应从文件中读取版本,并设置 MSI 属性。此属性应稍后在启动条件下使用。

您创建自定义操作所使用的语言并不重要。因此,请随意选择对您方便的技术。但是,请记住VBScript 自定义操作很糟糕。:-)

如果您的应用程序是 .NET 应用程序,这意味着 .NET 是您安装的先决条件,因此您可以利用该选项在 C# 中创建自定义操作。DTF(与 WiX 附带的 MSI 数据库通信的 API)非常方便。例如,为了设置属性,您可以使用以下语法:

session["OTHER_APP_IS_INSTALLED"] = 1;
于 2011-10-04T05:45:56.493 回答