解决这个问题。 下面是解释我做了什么错误,以及我是如何解决的。
我创建了一台安装器(msi),并使用以下三重线动力启动安装机。
msiexec -i prog.msi DEBUGPROPERTY=True
我有几套单元与组件合并,这些单元将视这些财产是否被设定而安装,这些单元正像这样注入它们的财产。
<Merge
Id="SomeID"
Language="1033"
SourceFile="Module.msm"
DiskId="1">
<ConfigurationData
Name="debugProperty"
Value="[DEBUGPROPERTY]" />
What I was missing was in the merge modules (.msm) i needed the following code
<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>
This now works, and allows me to install .pdb files during an install if i include this argument.