gpt4 book ai didi

wix - 将命令行参数从 WiX 包传递给 MSI

转载 作者:行者123 更新时间:2023-12-04 03:44:31 27 4
gpt4 key购买 nike

我在 Wix 3.7 上。我有一个 MSI,我想设置一个注册表项(可能通过自定义操作,因为他必须检查该键是否已存在)。

我了解 bootstrap 项目中的 Bundle 无法更改机器状态(例如设置注册表)。因此,我试图通过 <MsiProperty> 传递命令行参数,但似乎没有在 bootstrap 的日志文件中显示为命令行参数。

  • 是否可以在 Bundle 中设置注册表项?
  • 如果没有,我如何添加命令行参数(或其他一些自定义数据)
    传递给MSI。
  • MSI 如何读取我传递给它的任何内容(是否最终成为命令行 arg 或其他内容)
    别的)。

  • 捆:
    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle
    Name="MyInstallerBootstrapperLocalDb"
    Version="1.0.0.0"
    Manufacturer="some company"
    UpgradeCode="PUT-GUID-HERE">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    <Chain>
    <MsiPackage Id="MyInstallerInstaller"
    SourceFile="$(var.MyInstallerInstaller.TargetPath)"
    Compressed="no">
    <!-- TODO - if this is being set correctly, the MSI needs to
    interpret it and set up the key-->
    <MsiProperty Name="SetLocalDb" Value="yes"/>
    </MsiPackage>
    </Chain>
    </Bundle>
    </Wix>

    最佳答案

    您的 MSI 需要像这样定义一个属性:

    <Property Id="SOMEPROPERTY" Value="Default"/>

    然后,您可以从包中设置此属性:
    <MsiPackage SourceFile="<package>.msi" Id="SomeId">
    <MsiProperty Name="SOMEPROPERTY" Value="[SomeProperty]" />
    </MsiPackage>

    在此之后,您可以按照此处所述在 Bootstrapper 中设置该属性: WiX Bootstrapper: How do I set burn variables from the command line?

    请注意, SomeProperty 是您必须定义的 Burn 变量:
    <Variable Name="SomeProperty" Type="string" Value="DefaultValue" />

    更新:

    在 MSI 中,您可以根据此属性进行注册表搜索:
    <RegistrySearch Id="GetSomeValue" Root="HKLM" Key="SOFTWARE\<Manufacturer>\[SOMEPROPERTY]" Name="<ValueName>" Type="raw" />

    关于wix - 将命令行参数从 WiX 包传递给 MSI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17729878/

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