WiX:从exepackage返回一个值

时间:2015-05-15 11:33:34

标签: wix return-value

我被要求在现有的WiX包中添加一个功能。 具体来说,我需要运行一个小型的c#应用程序,并将一个int返回给WiX,以有条件地控制进一步的操作。 我可以从ExePackage help看到有ExitCode,但这是成功,错误,scheduleReboot或forceReboot的枚举。

我用谷歌搜索了一下,我想知道我是否错过了这一点。我可以在WiX内部实现C#进程以让用户提供我需要的信息,但是现有的软件包已经有了用C#编写的具有特定风格的自定义ExePackages,所以如果可以的话,我想继续使用它。 (现有包不返回任何所需的值)

我可以这样做,还是我需要尝试在WiX中完全操作?

作为参考,其中一个现有包看起来像这样:

<ExePackage
    SourceFile="..."
    DisplayName="License Key"
    InstallSize="0"
    Permanent="yes"
    InstallCommand="/ignoreIfLicensed"
    RepairCommand="/ignore"
    UninstallCommand="/ignore"
/>

1 个答案:

答案 0 :(得分:0)

<ExePackage ...>的引用意味着您希望条件在WIX包中运行。在这种情况下,我认为您的选项有限,您只能将ExePackage的返回值映射到forceReboot等全局行为。

你有<MsiPackage...>个引用吗?如果有,您可以使用自定义操作在每个<MsiPackage...>内移动条件行为来调用exe并设置属性。然后,可以将该属性用作要有条件安装的每个<component...>中的条件。有关自定义操作设置属性的详细信息,请参阅Using a WiX custom action to set a property's value