如何判断 属性 是否通过命令行传入?
How can I tell whether a property was passed in via command line?
我有一种情况,我想通过 C# 自定义操作初始化 APPDIR,但我只想在没有将 APPDIR 作为命令行参数提供的情况下这样做(在我们的引导程序中出现自定义逻辑,我也想用于设置 MSI 的默认路径,因为我们同时提供这两种路径)。
我已经尝试查看表格,但似乎没有在那里设置命令行参数。
日志输出:
MSI (c) (A0:78) [16:40:33:995]: Command Line: APPDIR=C:\WHAT CURRENTDIRECTORY=E:\ CLIENTUILEVEL=0 CLIENTPROCESSID=10912
当我在命令行上设置 APPDIR=C:\WHAT
时,但我找不到一个地方来检查一个值是否实际上 由命令行 设置(而不是默认值,UI 或自定义操作)。
您应该能够通过在安装的各个阶段寻找 属性 来做到这一点。如果它在 UI 序列开始之前(以及任何可能更改它的自定义操作之前)存在,那么根据定义,它必须已在命令行上设置。因此,您可以有一个 属性 SETONCOMMANDLINE 和一个类型 51 自定义操作(一组 属性 CA),它使用条件 APPDIR 将 SETONCOMMANDLINE 设置为 true,因此只有当 APPDIR 已经设置时才会设置它。
在 UI 序列之后(在任何其他可能改变它之前)对 SETINUI 属性 执行相同的操作。有一个 属性 设置 CA 将 SETINUI 设置为 true 条件是 -APPDIR AND NOT SETONCOMMANDLINE- 所以 SETINUI 如果它被设置为一个值但它不是通过命令行。但是让你的 UI 在设置 APPDIR 的同时设置 SETINUI 可能更简单。
当你需要知道它是如何设置的时候你可以这样做如果-NOT SETINUI AND NOT SETONCOMMANDLINE-
我有一种情况,我想通过 C# 自定义操作初始化 APPDIR,但我只想在没有将 APPDIR 作为命令行参数提供的情况下这样做(在我们的引导程序中出现自定义逻辑,我也想用于设置 MSI 的默认路径,因为我们同时提供这两种路径)。
我已经尝试查看表格,但似乎没有在那里设置命令行参数。
日志输出:
MSI (c) (A0:78) [16:40:33:995]: Command Line: APPDIR=C:\WHAT CURRENTDIRECTORY=E:\ CLIENTUILEVEL=0 CLIENTPROCESSID=10912
当我在命令行上设置 APPDIR=C:\WHAT
时,但我找不到一个地方来检查一个值是否实际上 由命令行 设置(而不是默认值,UI 或自定义操作)。
您应该能够通过在安装的各个阶段寻找 属性 来做到这一点。如果它在 UI 序列开始之前(以及任何可能更改它的自定义操作之前)存在,那么根据定义,它必须已在命令行上设置。因此,您可以有一个 属性 SETONCOMMANDLINE 和一个类型 51 自定义操作(一组 属性 CA),它使用条件 APPDIR 将 SETONCOMMANDLINE 设置为 true,因此只有当 APPDIR 已经设置时才会设置它。
在 UI 序列之后(在任何其他可能改变它之前)对 SETINUI 属性 执行相同的操作。有一个 属性 设置 CA 将 SETINUI 设置为 true 条件是 -APPDIR AND NOT SETONCOMMANDLINE- 所以 SETINUI 如果它被设置为一个值但它不是通过命令行。但是让你的 UI 在设置 APPDIR 的同时设置 SETINUI 可能更简单。
当你需要知道它是如何设置的时候你可以这样做如果-NOT SETINUI AND NOT SETONCOMMANDLINE-