gpt4 book ai didi

properties - msiexec 不会将参数传递给自定义操作

转载 作者:行者123 更新时间:2023-12-04 00:51:18 28 4
gpt4 key购买 nike

我在 MSI 安装程序中有一个自定义操作,可以对某些配置文件进行一些更改。我的要求是以静默模式运行安装,所以我使用的是 msiexec。
这是命令:

msiexec /i myInstaller.msi /l* out.txt myContextParameter=value1
myContextParameter永远不会传递给自定义操作,所以当我这样做时 context.Parameters["myContextParameter"]我得到一个 null值(value)。

当我在 UI 模式下运行我的 MSI 时,参数被正确传递。我还确保在 CustomActionData 中正确设置了该属性的名称。 .

最佳答案

我一直在用头撞墙,所以这是我发现的:

您必须在命令行以及每个自定义操作的“CustomActionData”属性上设置参数(无论您在安装、提交等下有什么)

您的命令行将如下所示:
msiexec /i myInstaller.msi MYFIRSTPARAM=VALUE1 MYSECONDPARAM=VALUE2
然后,您的 CustomActionData 应如下所示:
/myfirstparam=[MYFIRSTPARAM] /mysecondparam=[MYSECONDPARAM]
现在,这里有一些特殊情况:

  • 看起来@Klaus 是对的,您需要在参数名称中使用 ALLCAPS。
  • 如果您的值包含空格,则在命令行和 CustomActionData 属性中都需要将它们括起来,如下所示:
    msiexec /i myInstaller.msi MYFIRSTPARAM="VALUE1" MYSECONDPARAM="VALUE2"/myfirstparam="[MYFIRSTPARAM]" /mysecondparam="[MYSECONDPARAM]"
  • 如果您的值以斜杠结尾,就像大多数文件路径一样,您将遇到一个奇怪的问题:当 msiexec 构建您的 customactiondata 时,它会创建以下字符串:
    /myfirstparam="C:\myfile\" /mysecondparam="C:\myfile\"
    是否在命令行上使用引号并不重要,如果该斜杠是值的最后一个字符,它将被有效地读取为转义字符,并将转义 customactiondata 属性中的引号。这会造成严重破坏。解决方案是 1) 在您的参数和最后一个引号之间添加一个空格,然后记得在代码中的某个地方修剪 () 它,或者 2) 在您的参数和引号之间添加一个额外的斜线,以逃避转义性格。请参阅以下两种方法:
    /myfirstparam="[MYFIRSTPARAM] " /mysecondparam="[MYSECONDPARAM]\"

  • 希望有帮助。

    关于properties - msiexec 不会将参数传递给自定义操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2176790/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com