在WIX安装期间根据命令行参数有条件地安装文件



我想在 wix 安装期间安装文件,无论是否已设置命令行参数

例如,我有以下文件,只有在设置了 DEBUG 标志后才会安装

    <Component Id="file.pdb" Guid="SOME-GUID">
       <Condition>DEBUG</Condition>
       <File Id="file.pdb" Source="file.pdb" KeyPath="yes" Vital="no" />
    </Component>

我添加了 DEBUG 属性并从命令行读入它。该文件永远不会安装,我很困惑为什么?

解决了这个问题。以下是我做错了什么以及我做了什么来解决它的解释

我创建了一个安装程序(.msi),并使用以下cmd行参数来启动它

msiexec -i prog.msi DEBUGPROPERTY=True

我有几个带有组件的合并模块,这些模块将根据是否设置此属性进行安装,这些属性正在像这样注入到它们中......

<Merge
    Id="SomeID"
    Language="1033"
    SourceFile="Module.msm"
    DiskId="1">
    <ConfigurationData
      Name="debugProperty"
      Value="[DEBUGPROPERTY]" />

我缺少的是合并模块(.msm)中,我需要以下代码

    <Configuration Name='debugProperty' Format='Text' DefaultValue='[DEBUGPROPERTY]'/>
    <Substitution Table='CustomAction' Row='setDebugProperty' Column='Target' Value='[=debugProperty]'/>
    <CustomAction Id='setDebugProperty' Property='DEBUGPROPERTY' Value='[DEBUGPROPERTY]'/>
    <InstallExecuteSequence>
            <Custom Action='setDebugProperty' Before="LaunchConditions">1</Custom>
    </InstallExecuteSequence>

这允许我访问此模块中的属性 DEBUGPROPERTY,以便我可以限制文件是否在安装时安装,如下所示

<Component Id="File.pdb" Guid="SOME-GUID">
    <Condition>DEBUGPROPERTY</Condition>
    <File Id="File.pdb" Source="File.pdb" KeyPath="yes" Vital="no" />
</Component>

这现在可以工作了,如果我包含此参数,则允许我在安装过程中安装.pdb文件。

最新更新