Hi,

I have some problems with using the new "burn" feature. I want to create 
a bootstrapper that checks for a particular .NET version and then 
eventually installs the missing prerequisite before it installs my own 
application.

If have two problems:

(1) The "DetectCondition" for my .NET Webinstaller ExePackage doesn't 
work as I want it to work

I try to check the exact complete version number of the installed .NET 
package. As I'm targetting .NET 3.0, I want to check if the installed 
version is "3.0.30729.5420". Maybe my attempt is a little bit naive, but 
from reading the documentation I couldn't find why this shouldn't work:

> <?xml version="1.0" encoding="UTF-8"?>
> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"; 
> xmlns:util="http://schemas.microsoft.com/wix/UtilExtension";>
>       <Bundle Name="FoobarBootstrapper" Version="1.0.0.0" 
> Manufacturer="FooBar" UpgradeCode="B8B07D94-4E16-4942-8EE1-3342C5CC22CD">
>               <BootstrapperApplicationRef 
> Id="WixStandardBootstrapperApplication.RtfLicense" />
>
>     <util:RegistrySearch Id="FindDotNet30InstallRegValue" Root="HKLM" 
> Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" 
> Value="InstallSuccess" Variable="DotNet30InstallRegValue" />
>     <util:RegistrySearch Id="FindDotNet30Version" Root="HKLM" 
> Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" Value="Version" 
> Variable="DotNet30Version" />
>
>     <Chain>
>
>       <ExePackage Id="DotNet3.0" Cache="no" Compressed="no" Vital="yes" 
> PerMachine="yes" Name="DotNet3.0" SourceFile="DotNetFx3Setup.exe" 
> DetectCondition="DotNet30InstallRegValue=1 AND 
> DotNet30Version=3.0.30729.5420"/>
>       <MsiPackage Id="ClientInstall" Cache="no" Compressed="no" 
> Name="FoobarInstall" SourceFile="foobar.msi" Vital="yes" />
>
>     </Chain>
>
>       </Bundle>
> </Wix>

This is the result I get in the log file on a system that has the 
desired version installed:

> [0BBC:11CC][2011-11-02T12:47:18]: Setting string variable 
> 'DotNet30InstallRegValue' to value '1'
> [0BBC:11CC][2011-11-02T12:47:18]: Setting string variable 'DotNet30Version' 
> to value '3.0.30729.5420'
> [0BBC:11CC][2011-11-02T12:47:18]: Detected related bundle: 
> {732f16dc-46cd-4f24-8b55-a5c4f0e9b03e}, scope: PerMachine, version: 1.0.0.0, 
> operation: None
> [0BBC:11CC][2011-11-02T12:47:18]: Error 0x8007000d: Failed to parse condition 
> "DotNet30InstallRegValue=1 AND DotNet30Version=3.0.30729.5420". Unexpected 
> character at position 47.

I also tried without the "AND" condition, just with the second half of 
my condition, but the result is the same.

Does anybody have an idea what might be wrong here?

(2) Uninstalling always tries to remove .NET

If I just check for the presence of .NET 3.0 without checking the exact 
version, I can successfully install my application on a computer where 
.NET 3.0 is already installed. But when I try to uninstall the 
bootstrapper, it always tries to uninstall .NET 3.0 also. As this is not 
possible on Windows 7 (at least not that way), the whole uninstall 
process fails and I can't uninstall my application.

Can someone explain me what I'm doing wrong here?

TIA,
Mathias

------------------------------------------------------------------------------
RSA&#174; Conference 2012
Save $700 by Nov 18
Register now&#33;
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to