我想在wix安装期间有条件地安装文件是否已设置命令行参数
e.g。我有以下文件,只有在设置了DEBUG标志时才会安装
<Component Id="file.pdb" Guid="SOME-GUID">
<Condition>DEBUG</Condition>
<File Id="file.pdb" Source="file.pdb" KeyPath="yes" Vital="no" />
</Component>
我添加了DEBUG属性并从命令行读取它。文件永远不会安装,我很困惑为什么?
答案 0 :(得分:2)
解决了这个问题。下面解释我做错了什么以及我做了什么来解决它
我创建了一个安装程序(.msi),并使用以下cmd行args启动它
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文件。