我有简单的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
答案 0 :(得分:1)
作为自定义操作运行的可执行文件无权访问安装会话,因此无法修改属性。理想情况下,您可以重写当前在exe中驻留在dll中的代码,因此可以将其称为dll自定义操作。
如果您无法重写内容(也许您从其他地方收到了exe),则需要编写一个dll自定义操作来启动exe,检查其退出代码,并相应地设置属性。
在这两种情况下,您都不需要预定义该属性;你可以在dll自定义操作中设置它。在这两种情况下,如果dll是用C#编写的,则必须使用像DTF这样的技术来调用它,因为Windows Installer无法直接调用托管代码。