<?xml version="1.0" encoding="UTF-8"?>
<installer-gui-script minSpecVersion='1'>
    <platforms>
        <Windows arch="intel"/>
    </platforms>
    <choices-outline ui='SoftwareUpdate'>
        <line choice='su'/>
    </choices-outline>
    <choice id='su'>
        <pkg-ref id='auto'>BCLocUpdateEnable.exe</pkg-ref>
        <pkg-ref id='auto' onConclusion='RequireRestart'>BCUpdateXP.msp</pkg-ref>
    </choice>
    <choice id='su' visible='Check()'/>
    <choice id='su' title='SU_TITLE' versStr='SU_VERS'/>
    <choice id='su' description='SU_DESCRIPTION' description-mime-type='text/html'/>
    

// 
<script>

// XP, Vista32, Vista64
var TargetOS = "XP";

var productVersionRangeMax = "2.0.3";
var productVersionRangeMin = "2.0.0";

function Check() 
{
    if(!IsWasuVersionSupportBootcamp())
        return false;

    if (!CheckOs(TargetOS))
        return false;

    if(!productInVersionRange("Boot Camp", productVersionRangeMin, productVersionRangeMax))
        return false;
    
    if(ASUVerifySourceCache("{F0E45628-1218-4865-A516-8E8A54272ADC}","BootCamp.cab", 0, 0, "") == false)
    {
          if(ASUVerifySourceCache("{8817DD5D-46A9-4082-8C72-3DFC8A97F9A7}","BootCamp.cab", 0, 0, "") == false)
          {
              if(ASUVerifySourceCache("{F14C6218-D619-A564-898C-3AA93FE9C776}","BootCamp.cab", 0, 0, "") == false)
              {
                 return false;
              }
          }
    }
    
    // Needs update
    return true;
} 

function IsWasuVersionSupportBootcamp()
{
    if(compareVersionStrings(AsuVersion, "2.1.0.97") != -1)
    {
        return true;
    }
        
    return false;
}

function CheckOs( OsString )
{
	try
	{
		var count = 0;
        
		count = WMIExecQuery("SELECT * FROM Win32_OperatingSystem ");					
		// log("Found " + count + " records.");
		
		//  Now let us iterate through the list of objects
		//  found from the query.
		
		for (i = 0; i &lt; count; i++)
		{
            
            var TempString  = WIndowsVersion();
            var OsVers = TempString.split(".");
            var OsMajor = OsVers[0];
            var OsMinor = OsVers[1];
            
//            log("OS Major : " + OsMajor + " Minor : " + OsMinor);

            // XP bit
            if(OsString == "XP")
                if(OsMajor == "5")
                    if(OsMinor == "1")
                    {
//                        log("Found XP.");
                        return true;
                    }
            
            // Vista 32 bit
            if(OsString == "Vista32")
                if(OsMajor == "6")
                    if(OsMinor == "0")
                    {
                        var OsArch = WMIGetProperty(i, "OSArchitecture");
                        if(OsArch.substring(0,2) == "32")
                        {
//                            log("Found Vista 32 bit.");
                            return true;
                        }
                    }
                    
            // Vista 64 bit
            if(OsString == "Vista64")
                if(OsMajor == "6")
                    if(OsMinor == "0")
                    {
                        var OsArch = WMIGetProperty(i, "OSArchitecture");
                        if(OsArch.substring(0,2) == "64")
                        {
//                            log("Found Vista 64 bit.");
                            return true;
                        }
                    }
                    
        }
	}
	catch (e)
	{
		log("An exception occurred. CheckOs failed.");
		log("Error: " + e.message);
	}
    
    return false;
    
}

function productInVersionRange(productName, minVersion, maxVersion)
{ 
    var i = 0;
    var j = 0; 
    var productIndex; 
    
    do
    { 
        productIndex = system.ASUEnumerateProducts(i++); 
        var foundName = system.ASUGetProductInfo(productIndex,"ProductName"); 
        log("found product: " + foundName); 
        
		for (j = 0; j &lt; (foundName.length - productName.length + 1); j++)
        {
            if (foundName.substring(j, productName.length+j) == productName) 
            { 
                var foundVersion = system.ASUGetProductInfo(productIndex,"VersionString"); 
                log("version of " + foundName + " is: " + foundVersion);
                return(versionInRange(foundVersion, minVersion, maxVersion)); 
            } 
        }
    }
    while(productIndex); 
    
    return false; 
}

function versionInRange(testVersion, minVersion, maxVersion) 
{ 
    if ((-1 != compareVersionStrings(testVersion, minVersion)) &amp;&amp; (1 != compareVersionStrings(testVersion, maxVersion))) 
    {
//        log("version is IN range");
        return true; 
    }
    else 
    {
//        log("version is NOT IN range");
        return false; 
    }
} 

function compareVersionStrings(string1, string2) 
{ 
    // Make sure allocate enough space for future version number
    tempString = "0000.0000.0000.0000";
    
    var parts1 = tempString.split("."); 
    var parts2 = tempString.split("."); 
    
    parts1 = string1.split("."); 
    parts2 = string2.split("."); 
    
    while(parts1.length &lt; parts2.length) 
        parts1[parts1.length] = "0"; 
        
    while(parts2.length &lt; parts1.length) 
        parts2[parts2.length] = "0"; 
        
    for( var i in parts1 ) 
    { 
        var sub1 = 1*parts1[i]; 
        var sub2 = 1*parts2[i]; 
        
//        log("sub1 {" + sub1 + "}");
//        log("sub2 {" + sub2 + "}");
        
        if( sub1 != sub2 )
        { 
            if( sub1 > sub2 ) return 1; 
            else return -1; 
        } 
    } 
    return 0; 
}
</script>
    <localization>
        <strings language="English"><![CDATA["SU_TITLE" = "Boot Camp Update";
"SU_VERS" = "2.1";
"SU_SERVERCOMMENT" = "For Windows systems";

"SU_DESCRIPTION"='<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="Content-Style-Type" content="text/css">
  <title></title>
  <meta name="Generator" content="Cocoa HTML Writer">
  <meta name="CocoaVersion" content="824.41">
  <style type="text/css">
    p.p1 {margin: 0.0px 0.0px 12.0px 0.0px; font: 12.0px Lucida Sans Unicode}
  </style>
</head>
<body>
<p class="p1">This update addresses bugs and improves compatibility with Microsoft Windows XP and Windows Vista running on a Mac computer using Boot Camp. It is highly recommended for all Boot Camp users.</p>
<p class="p1">For more information about this update, please visit this website: <a href="http://www.apple.com/support/bootcamp/">http://www.apple.com/support/bootcamp/</a></p>
</body>
</html>
';
]]></strings>
    </localization>
</installer-gui-script>