I'm newbie in installers and I can't  say that all things I wanted to have,  
could be also helpful for other people.

For now I can remember only a few things:

For instance, a way to say to the bundle to stay in Programs and Features( P&F) 
(probably it is possible now but I didnt find any info about it). I wanted to 
have possibility to run uninstall from P&F for standard installation and for 
installations with TRANSFORMS=":Ixx". I mean I wanted to have a way to manage 
this process by myself. I can have a counter for installed instances and remove 
a bundle link from  P&F with the last uninstalled instance .

Also, it would be great to have a little bit more info about bundle and which 
packages/features it contains.To get such info I used approach from this blog 
http://bit.ly/1s7VPPZ (Part 3). 

Sometimes I wanted to configure install/update/remove process by myself 
throught setting RequstedState in OnPlanPackageBegin event but it didn't affect 
Execute(parameter from logs) and it didn't run my msi. I want some methods in 
Engine/BA to force some things to happen.



01.08.2014, 02:13, "Rob Mensching" <r...@firegiant.com>:
> What kind of control?
>
> -----Original Message-----
> From: serkbugs [mailto:serkb...@yandex.ru]
> Sent: Thursday, July 31, 2014 14:49
> To: General discussion about the WiX toolset.
> Subject: Re: [WiX-users] Multiple Instance installations from wix BA 
> application
>
> Thanx for quick answer.
> I will try to do multiinstances in a different way(not through installer).
>
> One comment from my side after a few days trying to start it work.
> I think we need a little bit more control of installing process in BA 
> application.
> If I had more control over package detect/apply/etc. proces, I could fix all 
> problems I had.
>
> 31.07.2014, 21:28, "Rob Mensching" <r...@firegiant.com>:
>>  There is a feature request open for Burn to support multiple instances.
>>
>>  -----Original Message-----
>>  From: serkbugs [mailto:serkb...@yandex.ru]
>>  Sent: Thursday, July 31, 2014 01:51
>>  To: wix-users@lists.sourceforge.net
>>  Cc: Sergey Kozhemyachenko
>>  Subject: [WiX-users] Multiple Instance installations from wix BA
>>  application
>>
>>  Hi,
>>
>>  Our customer wants to install multiple instances of windows service per 
>> each service(like SQL server installation with multiple instances).
>>
>>  I was trying to build a prototype using custom BA 
>> application(Microsoft.Tools.WindowsInstallerXml.Bootstrapper.BootstrapperApplication).
>>
>>  I've read a lot of topics around  InstanceTransforms in msi and it looks 
>> like I can start it work from msi with msiexec /i MultiInstance.msi 
>> MSINEWINSTANCE=1 TRANSFORMS=":I01" but I cannot understand how to run it 
>> properly from BA.
>>
>>  Here is some pieces from my prototype.
>>
>>  Msi(please don't pay attention to extra actions and properties):
>>  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";
>>        xmlns:util="http://schemas.microsoft.com/wix/UtilExtension";>
>>      <Product Id="$(var.I00)" Name="$(var.ProductName32)"
>>  Language="1033" Version="$(var.CurrentVersion)" Manufacturer="Me inc"
>>  UpgradeCode="$(var.UpgradeGuid)">
>>          <Package InstallerVersion="200" Compressed="yes"
>>  InstallScope="perMachine" />
>>          <MajorUpgrade AllowDowngrades="no" AllowSameVersionUpgrades="yes"
>>                        DowngradeErrorMessage="You can't downgrade this
>>  application" Schedule="afterInstallExecute" MigrateFeatures="yes"/>
>>
>>          <MediaTemplate EmbedCab="yes" />
>>          <Feature Id="ProductFeature" Title="SetupProjectTest"
>>  Level="1">
>>              <ComponentGroupRef Id="ProductComponents" />
>>          </Feature>
>>          <Property Id="PATHTOCOPY" Secure="yes"></Property>
>>          <Property Id="PATHTOCOPYTO" Secure="yes"></Property>
>>          <Binary Id='CustomAction'
>>  SourceFile="$(var.TestCustomAction.TargetDir)TestCustomAction.CA.dll"
>>  />
>>
>>          <Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
>>          <Property Id='REINSTALLMODE' Value='amus'/>
>>          <Property Id='ServiceName' Value='Test Service Name 2'/>
>>        <Property Id='INSTANCEID' Value='I01'>
>>          <RegistrySearch Id="InstanceIdSearch" Root="HKLM"
>>  Key="Software\[Manufacturer]\[ProductCode]\$(var.ProductName32)"
>>  Name="InstanceId" Type="raw" />
>>        </Property>
>>          <InstanceTransforms Property='INSTANCEID'>
>>            <Instance Id='I01' ProductCode='$(var.I01)'
>>  ProductName='I01'/>
>>            <Instance Id='I02' ProductCode='$(var.I02)'
>>  ProductName='I02'/>
>>            <Instance Id='I03' ProductCode='$(var.I03)'
>>  ProductName='I03'/>
>>          </InstanceTransforms>
>>      </Product>
>>  ........
>>
>>  Bundle:
>>
>>  <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi";
>>       xmlns:util="http://schemas.microsoft.com/wix/UtilExtension";
>>       xmlns:bal="http://schemas.microsoft.com/wix/BalExtension";>
>>
>>      <Bundle Name="$(var.ProductName)" Version="$(var.CurrentVersion)"
>>  Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeGuid)">
>>
>>        <BootstrapperApplicationRef
>>  Id="ManagedBootstrapperApplicationHost">
>>          <Payload
>>  SourceFile="$(var.TestBootstrapperApplication.TargetDir)BootstrapperCo
>>  re.config"/>
>>          <Payload
>>  SourceFile="$(var.TestBootstrapperApplication.TargetDir)TestBootstrapp
>>  erApplication.dll"/>
>>          <Payload
>>  SourceFile="$(var.TestBootstrapperApplication.TargetDir)GalaSoft.MvvmL
>>  ight.WPF4.dll"/>
>>          <Payload SourceFile="c:\Program Files (x86)\WiX Toolset
>>  v3.7\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
>>        </BootstrapperApplicationRef>
>>
>>          <Variable Name="DIR_EXISTS" Value="NO" Persisted="yes"
>>  Type="string" />
>>          <Variable Name="PATHTOAPP" Value="c:\program files
>>  (x86)\SetupProjectTest\" Persisted="yes" Type="string" />
>>
>>        <Chain>
>>              <PackageGroupRef Id="NetFx40Web" />
>>              <PackageGroupRef Id="pkgMsi"/>
>>          </Chain>
>>
>>      </Bundle>
>>  </Wix>
>>
>>  another bundle file:
>>   <Fragment>
>>  ......
>>    <Variable Name='TRANSFORMS' bal:Overridable="yes"/>
>>    <Variable Name='MSINEWINSTANCE' bal:Overridable="yes"/> ..........
>>    <PackageGroup Id="pkgMsi">
>>              <MsiPackage Id="package32"
>>                    
>> SourceFile="$(var.SetupProjectTest.TargetDir)\SetupProjectTest.msi"
>>                    Vital="yes"
>>                    LogPathVariable="WixBundleLog_package32"
>>                    DisplayInternalUI="yes"
>>                    EnableFeatureSelection="no"
>>                    SuppressSignatureVerification="yes"
>>                    ForcePerMachine="yes"
>>                    InstallCondition="NOT TRANSFORMS"
>>                <MsiProperty Name="INSTALLFOLDER"
>>  Value="[INSTALLFOLDER]"/>
>>              </MsiPackage>
>>
>>              <MsiPackage Id="package32Multiple"
>>                          
>> SourceFile="$(var.SetupProjectTest.TargetDir)\SetupProjectTest.msi"
>>                          Vital="yes"
>>                          LogPathVariable="WixBundleLog_package32"
>>                          DisplayInternalUI="yes"
>>                          EnableFeatureSelection="no"
>>                          SuppressSignatureVerification="yes"
>>                          ForcePerMachine="yes"
>>                          InstallCondition="TRANSFORMS"
>>                <MsiProperty Name="TRANSFORMS" Value=":I01"/>
>>                <MsiProperty Name="MSINEWINSTANCE"
>>  Value="[MSINEWINSTANCE]"/>
>>                <MsiProperty Name="INSTALLFOLDER"
>>  Value="[INSTALLFOLDER]"/>
>>              </MsiPackage>
>>
>>          </PackageGroup>
>>  I'm using the same msi but with different set of properties depends on some 
>> settings in BA.
>>
>>  In BA code I'm trying to ask engine to set state in state I need:
>>
>>  private void OnPlanPackageBegin(object sender,
>>  PlanPackageBeginEventArgs e)
>>          {
>>             //I have a model of packages and their statuses
>>              var package = this._bundle.Packages.FirstOrDefault(p =>
>>  p.Id.Equals(e.PackageId, StringComparison.CurrentCultureIgnoreCase));
>>              if (package != null)
>>              {
>>                  e.State = package.RequestState; // is set to
>>  RequestState.Present for packages I want to update
>>              }
>>          }
>>
>>  After I run my bundle.exe for second time and change package state in the 
>> state I need(also set TRANSFORMS and MSINEWINSTANCE) in OnPlanPackageBegin I 
>> can see in my logs such strings:
>>
>>  [14BC:101C][2014-07-31T04:45:25]i201: Planned package:
>>  package32Multiple, state: Present, default requested: Absent, ba
>>  requested: None, execute: None, rollback: None, cache: No, uncache:
>>  No, dependency: Unregister
>>  [14BC:101C][2014-07-31T04:45:25]i201: Planned package: package32,
>>  state: Present, default requested: Absent, ba requested: Absent,
>>  execute: Uninstall, rollback: Install, cache: No, uncache: Yes,
>>  dependency: Unregister
>>
>>  As far as I understand main problem here that Engine detected package as 
>> Present and it doesn't matter what I have in "ba requested".
>>
>>  How can I change this behaviour?
>>  Are there any ways to say Engine execute action I need(Install, uninstall, 
>> etc.) ?
>>
>>  Any help will be really helpful.
>>
>>  Regards,
>>  Sergey.
>>
>>  ----------------------------------------------------------------------
>>  --------
>>  Infragistics Professional
>>  Build stunning WinForms apps today!
>>  Reboot your WinForms applications with our WinForms controls.
>>  Build a bridge from your legacy apps to the future.
>>  http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
>>  clktrk _______________________________________________
>>  WiX-users mailing list
>>  WiX-users@lists.sourceforge.net
>>  https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>>  ----------------------------------------------------------------------
>>  --------
>>  Infragistics Professional
>>  Build stunning WinForms apps today!
>>  Reboot your WinForms applications with our WinForms controls.
>>  Build a bridge from your legacy apps to the future.
>>  http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.
>>  clktrk _______________________________________________
>>  WiX-users mailing list
>>  WiX-users@lists.sourceforge.net
>>  https://lists.sourceforge.net/lists/listinfo/wix-users
>
> ------------------------------------------------------------------------------
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls.
> Build a bridge from your legacy apps to the future.
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users
>
> ------------------------------------------------------------------------------
> Infragistics Professional
> Build stunning WinForms apps today!
> Reboot your WinForms applications with our WinForms controls.
> Build a bridge from your legacy apps to the future.
> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
> _______________________________________________
> WiX-users mailing list
> WiX-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wix-users

------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to