如何判断属性是否通过命令行传递?

时间:2015-10-01 23:47:25

标签: windows-installer advanced-installer

我有一种情况,我想通过C#自定义操作初始化APPDIR,但我只想这样做,如果APPDIR没有作为命令行参数提供(那里发生了自定义逻辑)我们想要在设置MSI的默认路径时使用我们的引导程序,因为我们发送了两个)。

我已经尝试查看表格,但它并没有像在那里设置命令行参数那样出现。

日志输出:

  

MSI(c)(A0:78)[16:40:33:995]:命令行:APPDIR = C:\ WHAT CURRENTDIRECTORY = E:\ CLIENTUILEVEL = 0 CLIENTPROCESSID = 10912

当我在命令行上设置UITextField但我找不到一个地方来检查一个值是否实际上是由命令行设置(而不是默认值,UI或自定义动作)。

1 个答案:

答案 0 :(得分:0)

您应该只需在安装的各个阶段查找属性即可。如果它在UI序列开始之前(以及可能更改它的任何自定义操作之前)存在,那么根据定义它必须已在命令行上设置。因此,您可以拥有一个属性SETONCOMMANDLINE并具有类型51自定义操作(设置属性CA),它将条件APPDIR设置为SETONCOMMANDLINE,因此仅在已设置APPDIR时才设置它。

在UI序列之后(以及在可能更改它的任何其他内容之前)对SETINUI属性执行相同操作。有一个属性集CA,它将SETINUI设置为true,条件是-APPDIR而不是SETONCOMMANDLINE-所以如果SETINUI已设置为某个值但它不是通过命令行,则它将为true。但是,在设置APPDIR的同时让UI设置SETINUI可能更简单。

当你需要知道它是如何设置的时候你可以做 - 如果没有SETINUI而不是SETONCOMMANDLINE-