This is my first custom installer and essentially I needed to create one that
installed windows installer 3.1 then installed .Net 2.0 Service Pack 1. I
could not find a pre-packaged .Net 2.o SP 1 installer package anywhere so
this is my attempt.
The problem seems to be that when I first created it if .NET 2.0 was
installed it would not install .NET 2.0 SP1 so I commented out the line where
it checks but that leads the installer to try and reinstall it on reboot.
Can anyone tell me how to differentiate between .NET 2.0 and .NET 2.0 SP 1?
my package.xml file:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microso ft.com/developer/2004/01/bootstrapper"
ProductCode="Cu stom.Bootstrapp er.Package">
<PackageFiles CopyAllPackageF iles="false">
<PackageFile Name="NetFx20SP 1_x86.exe"/>
<PackageFile Name="WindowsIn staller-KB893803-v2-x86.exe"
HomeSite="Msi31 Exe"
PublicKey="3082 010A0282010100C F38F7E1A4275EF8 F0CCAACEFB3ADE3 B6231460546BBF5 B6051AD3B3ACC29 F0F4C670828C443 10F53B75797F6A9 1F4D633C861BFFA 9190007AF0791D5 D6870F690B29877 B5031D2F9B9D9B7 5892F4A01417C9E 7CCB87439BF4967 4999E98C1CF4057 5816F6C0D59216E 52485718F9949ED 557C65C91F38002 3C53EAB11D6296C C69EA0705B7DD53 7D4677720C306CE 85F84E3480A035C 41C53320157EFB1 28BD6C01E3AD40B C80A90949DB36E3 37F41D49AA2AA76 BD019D3CC8E9DD6 86467A134AD6451 9A553B3E2782F2E 35976B4CC6E81AB 0D3D1249069ABCE FC696E3E4CFB024 162DC07985D7E5C A74C27316B564CE 198D8E0D11D718D 3D2AC07F714DFFC F0203010001"/>
<PackageFile Name="dotnetchk .exe"/>
</PackageFiles>
<InstallCheck s>
<ExternalChec k Property="DotNe tInstalled" PackageFile="do tnetchk.exe" />
<RegistryChec k Property="IEVer sion"
Key="HKLM\Softw are\Microsoft\I nternet Explorer" Value="Version" />
</InstallChecks>
<Commands>
<Command PackageFile="Wi ndowsInstaller-KB893803-v2-x86.exe"
Arguments= '/norestart'>
<InstallConditi ons>
<BypassIf Property="Versi onMsi"
Compare="Versio nGreaterThanOrE qualTo" Value="3.1"/>
<FailIf Property="Versi on9x" Compare="ValueE xists"
String="Invalid Platform"/>
<FailIf Property="Versi onNT" Compare="Versio nLessThan"
Value="5.0.3" String="Invalid Platform"/>
<FailIf Property="Proce ssorArchitectur e"
Compare="ValueN otEqualTo" Value="Intel" String="Invalid PlatformArchite cture"
/>
<FailIf Property="Admin User" Compare="ValueE qualTo"
Value="false" String="AdminRe quired"/>
</InstallConditio ns>
<ExitCodes>
<ExitCode Value="0" Result="Success "/>
<ExitCode Value="1641" Result="Success Reboot"/>
<ExitCode Value="3010" Result="Success Reboot"/>
<DefaultExitCod e Result="Fail"
FormatMessageFr omSystem="true" String="General Failure" />
</ExitCodes>
</Command>
<Command PackageFile="Ne tFx20SP1_x86.ex e" Arguments="">
<InstallConditi ons>
<!-- Either of these properties indicates the .Net Framework is
already installed -->
<!--BypassIf Property="DotNe tInstalled" Compare="ValueN otEqualTo"
Value="0"/ -->
<!-- Bypass if MSI is not installed -->
<BypassIf Property="IsMsi Installed" Compare="ValueG reaterThan"
Value="0"/>
<!-- Block install if user does not have admin privileges -->
<FailIf Property="Admin User" Compare="ValueE qualTo" Value="false"
String="AdminRe quired"/>
<!-- Block install on Windows 95 -->
<FailIf Property="Versi on9X" Compare="Versio nLessThan" Value="4.10"
String="Invalid PlatformWin9x"/>
<!-- Block install on Windows 2000 SP 2 or less -->
<FailIf Property="Versi onNT" Compare="Versio nLessThan" Value="5.0.3"
String="Invalid PlatformWinNT"/>
<!-- Block install if IE 5.01 or greater is not present -->
<FailIf Property="IEVer sion" Compare="ValueN otExists"
String="Invalid PlatformIE" />
<FailIf Property="IEVer sion" Compare="Versio nLessThan" Value="5.01"
String="Invalid PlatformIE" />
<!-- Block install if the platform is not x86 -->
<FailIf Property="Proce ssorArchitectur e" Compare="ValueN otEqualTo"
Value="Intel" String="Invalid PlatformArchite cture" />
</InstallConditio ns>
<!--ExitCodes>
<ExitCode Value="0" Result="Success "/>
<ExitCode Value="1641" Result="Success Reboot"/>
<ExitCode Value="3010" Result="Success Reboot"/>
<DefaultExitCod e Result="Fail" String="General Failure"/>
</ExitCodes-->
<ExitCodes>
<ExitCode Value="0" Result="Success "/>
<ExitCode Value="3010" Result="Success Reboot"/>
<ExitCode Value="4097" Result="Fail" String="AdminRe quired"/>
<ExitCode Value="4098" Result="Fail"
String="Windows InstallerCompon entFailure"/>
<ExitCode Value="4099" Result="Fail"
String="Windows InstallerImprop erInstall"/>
<ExitCode Value="4101" Result="Fail" String="Another InstanceRunning "/>
<ExitCode Value="4102" Result="Fail" String="OpenDat abaseFailure"/>
<ExitCode Value="4113" Result="Fail" String="BetaNDP Failure"/>
<DefaultExitCod e Result="Fail" FormatMessageFr omSystem="true"
String="General Failure" />
</ExitCodes>
</Command>