All pastes #223149 Raw Edit

Stuff

public text v1 · immutable
#223149 ·published 2006-10-26 19:42 UTC
rendered paste body
<installer-gui-script minSpecVersion='1'>

	<options
		mpkg="com.apple.mpkg.OSInstall.UserDVD"
		eraseOptionAvailable='true'
	/>
	
	<title>MacOSX_Title</title>
	<license file="License.rtf"/>
	<welcome file='Welcome.rtfd'/>

	<script>
	
	function checkSupportedMachine(machineType){

		
		// if we can't find it, assume it's supported
		return true;
	}
	
	function checkSupportedBootRom(machineType){

		// if we can't find it, assume it's supported
		return true;
	}
	
	function installCheckScript(){

			
			return true;
	}
	
	function volCheckScript(){
					return true;
	}
	
	
	//This function checks if a language is already installed on disk.
	//This function could potentially be expensive, but the buffer cache
	//usually means it isn't. 
	function language_installed(langKey){
		var installed = false;
		
		//If we are erasing, then nothing will be installed
		//on the disk
		if(my.target.ignoreContents){
			return installed;
		}
		
		var constructedPath = my.target.mountpoint + '/System/Library/PrivateFrameworks/SetupAssistant.framework/Versions/A/Resources/';
			
		constructedPath += langKey + ".lproj";
			
		if(system.files.fileExistsAtPath(constructedPath)){
			installed = true;
		}else{
			installed = false;
		}

		return installed;
	}
	
	function language_running(langKey){
		var appleLanguages = system.defaults['AppleLanguages'];
	
	
		if(!appleLanguages || (appleLanguages.length == 0))
				return ((langKey == 'English') || (langKey == 'en'))
		
		return (langKey == appleLanguages[0]);
	}
	
	//Global Language Required Cache, this speeds up the many calls to this function
	gLanguageRequired = {
	};
	
	//Function returns true if the langKey is required, it uses a cache so that the logic doesn't
	//have to be run hundreds of times
	function language_required(langKey){
		
		if(! (gLanguageRequired[langKey])){
			var required = false;
			
			//If the exact same package is on disk, then this language is not required
			if(my.choice.packages.length &amp;&amp; !my.target.ignoreContents){
				var thisPackage = my.choice.packages[0];
				var receipt     = my.target.receiptForIdentifier(thisPackage.identifier);
			
				if(receipt){
					//system.log('package = ' + thisPackage.identifier + ':' + thisPackage.version);
					//system.log('receipt = ' + receipt.identifier + ':' + receipt.version);
					if(0 == system.numericalCompare(thisPackage.version,receipt.version)){
						required =  false;
					}
				}
			}

			if(language_installed(langKey) || language_running(langKey)){
				required =  true;
			}
			
			gLanguageRequired[langKey] = required;
		}
		
		return gLanguageRequired[langKey];
	}
	
	function language_enabled(langKey){
		var enabled = !(language_required(langKey));
		
		if(false == enabled){
			my.choice.tooltip = system.localizedString('TT_Language_Required_message');
		}
		
		return enabled;
	}

	function language_selected(langKey){
		var selected = my.choice.selected || language_required(langKey);

		return selected;
	}
	
	function upgrade_allowed(){
		var argv = upgrade_allowed.arguments;
		var upgradable = true;
		var upgradeAction = my.choice.packageUpgradeAction;
		
		if(argv.length > 0) { 
			upgradeAction = eval('choices.' + argv[0] + '.packageUpgradeAction');	
		}
		
		if((upgradeAction == 'downgrade') || (upgradeAction == 'mixed')){
			my.choice.tooltip = system.localizedString('TT_Newer_Package_Installed_message');	
			upgradable = false;
		}
		
		return upgradable;
	}
	
	</script>

	<installation-check script="installCheckScript()"/>
	<volume-check script="volCheckScript()"/>