Wix:自定义操作从文件中读取版本文本并设置启动条件

时间:2011-10-03 18:58:47

标签: batch-file wix custom-action text-files launch-condition

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

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

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

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

我也尝试过使用VBScript的不同方法但没有成功。

任何人都可以就如何设置此方案提供任何见解吗?我以为我知道,但我发现我没有线索。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

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

您创建自定义操作的语言并不重要。因此,请随意选择适合您的技术。但请记住VBScript custom actions suck。 : - )

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

session["OTHER_APP_IS_INSTALLED"] = 1;