[wix-users] Condition question - "Installed"
Walter Dexter
wfdexter at gmail.com
Wed Oct 11 16:19:52 PDT 2017
Great, thank you.
I don't think these will ever get repaired or modified, but the changes make sense just in case.
I wasn't sure if the feature condition would affect the feature's components. That's why I put in the transitive. Guess I'll take it back out.
Thanks again!
Sent from my iPad
> On Oct 11, 2017, at 2:51 PM, Joel Budreau <joel.budreau at gmail.com> wrote:
>
> - I’d drop “Installed OR”. It doesn’t affect a fresh install, but if you later run a repair or modify you might run into problems where both of these features evaluate to true.
> - You don’t need to set KeyPath=“no” (“no” is the default value)
> - Win64=“yes” is fine
> - You only need to set Transitive=“yes” if the component has a condition that you would want re-evaluated during a repair. So, no component condition -> drop Transitive attribute (default is “no”).
>
> - Joel
>
>> On Oct 11, 2017, at 10:00 AM, Walter Dexter via wix-users <wix-users at lists.wixtoolset.org> wrote:
>>
>> Hi-
>>
>> I have an installer that installs either one set of files or the other set
>> of files depending on a registry value.
>>
>> This seems like it's working, but I'm not sure if I should be including
>> "Installed OR" in my condition. In my limited testing it doesn't seem like
>> it matters, but maybe I'm missing something. WiX source snips are below.
>>
>> Notes:
>>
>> - This MSI is for internal use only, installing only on Server 2003
>> (32-bit) or Server 2012 (64-bit.)
>> - HKLM\SOFTWARE\a\b\c\d is a REG_SZ that will always contain 6.2 digits.
>> - Server 2003 platforms will never have a value that satisfies the
>> Feature2 condition.
>> - The components within the ComponentGroups all have versioned files as
>> their KeyPath (A DLL with version resource.)
>> - The non-KeyPath files within the components land in the same location
>> from both ComponentGroups.
>> - "CGOne" installs copies of "one.dll" and "a.ini" to three different
>> directories.
>> - "CGTwo" installs "two.dll" and "a.ini" to the same three
>> directories.
>> - It is likely that an older version of the same MSI (same UpgradeCode,
>> different ProductCode) will already have been installed on the target
>> system, along with files "old.dll" and "a.ini" already present in the same
>> three directories.
>> - Please excuse any typos; I re-keyed, simplified and anonymized the
>> following XML. My employer prefers that we remain semi-anonymous.
>>
>> <Property Id="VALUE" Secure="yes">
>> <RegistrySearch Id="RS_VALUE" Root="HKLM" Key="SOFTWARE\a\b\c" Name="d"
>> Type="raw" Win64="yes" />
>> </Property>
>>
>> <Feature Id="Feature1" Title="Files for Less" Level="0">
>> <ComponentGroupRef Id="CGOne" />
>> <Condition Level="1"><![CDATA[Installed OR VALUE < "120000.00"
>> ]]></Condition>
>> </Feature>
>>
>> <Feature Id="Feature2" Title="Files for More" Level="0">
>> <ComponentGroupRef Id="CGTwo" />
>> <Condition Level="1"><![CDATA[Installed OR VALUE >= "120000.00"
>> ]]></Condition>
>> </Feature>
>>
>> <ComponentGroup Id="CGOne">
>> <Component Id="CG1a" Guid="...." Directory="DIR_COPYA" Transitive="yes"
>>>
>> <File Id="CG1aDLL" Source="one.dll" KeyPath="yes" />
>> <File Id="CG1aINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> <Component Id="CG1b" Guid="...." Directory="DIR_COPYB" Transitive="yes"
>>>
>> <File Id="CG1bDLL" Source="one.dll" KeyPath="yes" />
>> <File Id="CG1bINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> <Component Id="CG1c" Guid="...." Directory="DIR_COPYC" Transitive="yes"
>>>
>> <File Id="CG1cDLL" Source="one.dll" KeyPath="yes" />
>> <File Id="CG1cINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> </ComponentGroup>
>>
>> <ComponentGroup Id="CGTwo">
>> <Component Id="CG2a" Guid="...." Directory="DIR_COPYA" Transitive="yes"
>>>
>> <File Id="CG2aDLL" Source="two.dll" KeyPath="yes" />
>> <File Id="CG2aINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> <Component Id="CG2b" Guid="...." Directory="DIR_COPYB" Transitive="yes"
>>>
>> <File Id="CG2bDLL" Source="two.dll" KeyPath="yes" />
>> <File Id="CG2bINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> <Component Id="CG2c" Guid="...." Directory="DIR_COPYC" Transitive="yes"
>>>
>> <File Id="CG2cDLL" Source="two.dll" KeyPath="yes" />
>> <File Id="CG2cINI" Source="a.ini" KeyPath="no" />
>> </Component>
>> </ComponentGroup>
>>
>> So what do you guys think - "Installed" needed, or better without it? Why?
>>
>> Any other feedback? I was uncomfortable with the "Win64=yes" but based on
>> logs it's reading the registry key successfully on the 32-bit platform.
>>
>> I'm also not quite sure if the "Transitive" is gaining me anything.
>>
>> Thanks!
>>
>> Walt
>>
>> ____________________________________________________________________
>> WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/
>
More information about the wix-users
mailing list