Hi

 

I am trying to create an installer for a .NET product. I have made a 
bootstrapper using votive and the msbuild bootstrap generator. I also want the 
bootstrapper to detect previously installed versions of my program to call my 
msi with REINSTALL=ALL REINSTALLMODE=vomus to enable minor upgrades. After a 
day of googling I thought I found the answer. Using msistuff.exe with the 
option /o INSTALLUPD to modify my setup.exe seemed like a solution but the 
problem remains.

 

My code for the bootstrapper is as follows:

 

  <ItemGroup>

    <BootstrapperFile Include="Microsoft.Net.Framework.2.0">

      <ProductName>Microsoft .NET Framework 2.0</ProductName>

    </BootstrapperFile>

  </ItemGroup>

  <Target Name="Bootstrapper" 

                   Inputs="$(OutDir)$(TargetFileName)" 

                  Outputs="$(OutDir)\Setup.exe" 

                  Condition=" '$(OutputType)'=='package' ">

    <GenerateBootstrapper   ApplicationName="Bootstrapper for MultiAccess 
Setup" 

                                                        
ApplicationFile="$(TargetFileName)" 

                                                        
BootstrapperItems="@(BootstrapperFile)" 

                                                        
ComponentsLocation="Relative" 

                                                        CopyComponents="true" 

                                                        
OutputPath="$(OutputPath)" 

                                                       Culture="en-US" />

  </Target>

  <Import Project="$(MSBuildExtensionsPath)\Microsoft\WiX\v3.0\Wix.targets" />

  <PropertyGroup>

    <BuildDependsOn>$(BuildDependsOn);Bootstrapper</BuildDependsOn>

  </PropertyGroup>

 

After building the bootstrapper, running the command msistuff setup.exe gives 
the output No RT_INSTALL_PROPERTY resources were found.

 

Then I run the command msistuff setup.exe" /o INSTALLUPD which gives the output 
Setting 'OPERATION' to 'INSTALLUPD' . . .

 

Running msistuff setup.exe again now gives the output OPERATION = INSTALLUPD    
 1 RT_INSTALL_PROPERTY resource was found.

 

First I do a new installation of my program. No problems.

I then builds a msi with a higher product version and tries to run it to 
simulate a minor upgrade.

Upgradecode and productId remains the same. PackageId is auto generated (left 
out of the WiX-code).

The bootstrapper end with an error message referring to a log file. The content 
of the log file is as follows:

 

The following properties have been set:

Property: [AdminUser] = true {boolean}

Property: [ProcessorArchitecture] = Intel {string}

Property: [VersionNT] = 5.1.2 {version}

Running checks for package '.NET Framework 2.0', phase BuildList

Running external check with command line 
"C:\DOCUME~1\PETER~1.BJO\LOCALS~1\Temp\VSDC1A.tmp\dotnetfx\dotnetchk.exe"

Process exited with code 1

Setting value '1 {int}' for property 'DotNetInstalled'

Reading value 'Version' of registry key 'HKLM\Software\Microsoft\Internet 
Explorer'

Read string value '7.0.5730.13'

Setting value '7.0.5730.13 {string}' for property 'IEVersion'

The following properties have been set for package '.NET Framework 2.0':

Property: [DotNetInstalled] = 1 {int}

Property: [IEVersion] = 7.0.5730.13 {string}

Running checks for command 'dotnetfx\instmsia.exe'

Result of running operator 'ValueExists' on property 'VersionNT': true

Result of checks for command 'dotnetfx\instmsia.exe' is 'Bypass'

Running checks for command 'dotnetfx\WindowsInstaller-KB893803-v2-x86.exe'

Result of running operator 'ValueExists' on property 'Version9x': false

Result of running operator 'VersionLessThan' on property 'VersionNT' and value 
'5.0.3': false

Result of running operator 'VersionGreaterThanOrEqualTo' on property 
'VersionMsi' and value '3.0': true

Result of checks for command 'dotnetfx\WindowsInstaller-KB893803-v2-x86.exe' is 
'Bypass'

Running checks for command 'dotnetfx\dotnetfx.exe'

Result of running operator 'ValueNotEqualTo' on property 'DotNetInstalled' and 
value '0': true

Result of checks for command 'dotnetfx\dotnetfx.exe' is 'Bypass'

'.NET Framework 2.0' RunCheck result: No Install Needed

Launching Application.

Using MsiInstallProduct with package path 'C:\Documents and 
Settings\peter.bjorkman\Desktop\MaSetup\sw\bin\Swe\msi.msi' and command line ''

MsiInstallProduct returned '1638'

Error:

 

The error code 1638 is the "Another version of this product is already 
installed"-error. Reading the logfile it looks like my msi is called without 
command line arguments.

 

For me it seems like modifying my setup.exe with msistuff.exe is not possible. 
Doesn't the bootstrapper I generate contain the resources msistuff modifies?

How can I achieve my goal of having a bootstrapper and being able to do minor 
upgrades?

 

Best regards

 

Peter Björkman

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to