Hi!

I've been trying to create one MSI package with many features and 
compontents which should be then custom modified for each of our custommers.

Let's say we have:
- Feature_1 containing
-- BaseComponents_1
-- BonusComponents_1 - only installed based on Condition
- Feature_2
-- BaseComponents_2
-- BonusComponents_2 - only installed based on Condition

For our regular customers we deliver the BaseComponents for each of the 
installed Features. But some Customers paid more and are obliged to get the 
BonusComponents. Then I'd like to modify their Base installation and add the 
BonusComponents to already installed Product. (this system is no means of 
piracy protection - it just helps to lower disk costs for regular customers)

This solution (posted below) works when the MSIs are installed on a clean 
system, but when the regular MSI is installed and then I try to use repair 
feature running the modified MSI it doesn't install the "new" components. 
I've tried setting the Transitive attribute, but it didn't help.
msiexec /f withbonus.msi

* Question:
Is there a way to reevaluate component condition on repair? Is there any 
other way to make this work? Does anybody has any idea, how to accomplish 
this? (there may be more "Bonus" features and associated properties and each 
customer requires only his to be installed)
Small idea: uninstall the product and reainstall with new settings - then I 
need to remember old settings and list of installed features and bonus 
components, which I don't know how to do.

My current solution is something like this:
<!-- this property gets modified to value 1 in Orca to create second 
installation installing the whole product -->
<Property Id="InstallBonus" Value="0" />
<Feature Id="Feature_1" Title="MyApp1"  Description="MyApp1 description" 
Level="1">
      <Component Id="MyApp1.exe" Guid="...">
        <File Id="MyApp1.exe" KeyPath="yes" 
Source="$(var.SourceDir)\MyApp1.exe" />
      </Component>
<!-- component Bonus1.dll should be installed only when InstallBonus 
property is set -->
      <Component Id="Bonus1.dll" Guid="..." Transitive="yes">
        <File Id="Bonus1.dll" KeyPath="yes" 
Source="$(var.SourceDir)\Bonus1.dll" />
        <Condition>InstallBonus> 0</Condition>
      </Component>
</Feature>
<Feature Id="Feature_2" Title="MyApp2"  Description="MyApp2 description" 
Level="1">
      <Component Id="MyApp2.exe" Guid="...">
        <File Id="MyApp2.exe" KeyPath="yes" 
Source="$(var.SourceDir)\MyApp2.exe" />
      </Component>
<!-- component Bonus2.dll should be installed only when InstallBonus 
property is set -->
      <Component Id="Bonus2.dll" 
Guid="{4C7436D3-94B8-4C05-9CE1-43FD692C50AD}" Transitive="yes">
        <File Id="Bonus2.dll" KeyPath="yes" 
Source="$(var.SourceDir)\Bonus2.dll" />
        <Condition>InstallBonus> 0</Condition>
      </Component>
</Feature>


Thank you
Ondrej Zarevucky


------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to