WIX:如何从.NET控制台应用程序设置属性

时间:2010-10-19 22:15:49

标签: c# wix

我有简单的C#控制台应用程序:

static int main(string[] args){
    return SomeBoolMethod() ? 1:0;
 }

如何在 WiX 2.0 中定义属性并将此值设置为它?我不关心将来的升级/卸载

UPD

我希望后者在条件中使用此属性:因此如果B,则MYPROPERTY == 0组将无法执行,但功能F_A中的所有其他组件都将执行 即。

  <Feature Id="F_A" Level="1">
     <Condition Level="0">NOT INSTALLED</Condition> <!-- Another custom property -->
      <ComponentGroupRef Id="B" />
     <ComponentRef Id="C_AnotherComponent" />
  </Feature>

 <ComponentGroup Id="B">
     <Condition Level="0">NOT MYPROPERTY</Condition> <!-- property that set in console-->
   <ComponentRef Id="C_ComponentName" />
 </ComponentGroup>

TIA

1 个答案:

答案 0 :(得分:1)

作为自定义操作运行的可执行文件无权访问安装会话,因此无法修改属性。理想情况下,您可以重写当前在exe中驻留在dll中的代码,因此可以将其称为dll自定义操作。

如果您无法重写内容(也许您从其他地方收到了exe),则需要编写一个dll自定义操作来启动exe,检查其退出代码,并相应地设置属性。

在这两种情况下,您都不需要预定义该属性;你可以在dll自定义操作中设置它。在这两种情况下,如果dll是用C#编写的,则必须使用像DTF这样的技术来调用它,因为Windows Installer无法直接调用托管代码。