rendered paste body<?xml version="1.0"?>
<installer-gui-script minSpecVersion='1'>
<options
eraseOptionAvailable='true'
hostArchitectures='ppc,i386'
/>
<title>MacOSX_Server_Title</title>
<license file="License.rtf" sla="EA0395"/>
<welcome file='Welcome.rtfd'/>
<script>
var minRam = 1024;
function checkSupportedMachine(machineType){
return true;
}
function checkSupportedBootRom(machineType){
return true;
}
function hasAtLeastRam(RAM) {
var requiredRAM = (RAM * 1024 * 1024);
var actualRAM = system.sysctl('hw.memsize');
return (actualRAM > (requiredRAM - 1));
}
function installCheckScript(){
try{
var machineType = system.ioregistry.fromPath('IODeviceTree:/')['compatible'];
if ( typeof(machineType) == "string") {
if(!checkSupportedMachine(machineType)){
my.result.message = system.localizedStringWithFormat('IC_Machine_message');
my.result.type = 'Fatal';
return false;
}
if(!checkSupportedBootRom(machineType)){
my.result.message = system.localizedStringWithFormat('IC_Firmware_message');
my.result.type = 'Fatal';
return false;
}
}
else {
for(var i = 0;i < machineType.length; i++){
if(!checkSupportedMachine(machineType[i])){
my.result.message = system.localizedStringWithFormat('IC_Machine_message');
my.result.type = 'Fatal';
return false;
}
if(!checkSupportedBootRom(machineType[i])){
my.result.message = system.localizedStringWithFormat('IC_Firmware_message');
my.result.type = 'Fatal';
return false;
}
}
}
if(!hasAtLeastRam(minRam)){
my.result.message = system.localizedStringWithFormat('IC_RAM_message');
my.result.type = 'Fatal';
return false;
}
}catch (e){
system.log('installCheckScript threw exception ' + e);
}
return true;
}
function volCheckScript(){
var target = my.target;
var destSystemVersion = target['systemVersion'];
if(target.mountpoint == '/'){
my.result.message = system.localizedString('VC_Boot_message');
my.result.type = 'Fatal';
return false;
}
if(destSystemVersion){
//Do not allow downgrades
if(1 == system.numericalCompare(destSystemVersion['ProductVersion'],system.version['ProductVersion'])){
my.result.message = system.localizedString('VC_Newer_message');
my.result.type = 'MustNotUpgrade';
return false;
}else if(!destSystemVersion.isServer){ //We cannot install over client
my.result.message = system.localizedString('VC_Upgrade_message');
my.result.type = 'MustNotUpgrade';
return false;
}else if((-1 == system.numericalCompare(destSystemVersion['ProductVersion'],'10.3.0'))
|| (0 <= system.numericalCompare(destSystemVersion['ProductVersion'],'10.5.0')) ){
//We cannot upgrade over anything under 10.3.0 or anything over 10.5
my.result.message = system.localizedString('VC_Upgrade_message');
my.result.type = 'MustNotUpgrade';
return false;
}
//If the Essential OS bits are not selected, then we can't really install anyways
if(!choices['EssentialSystemSoftwareGroup'].selected){
my.result.message = system.localizedString('VC_Newer_message');
my.result.type = 'MustNotUpgrade';
return false;
}
}
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 && !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 verCompare(checkVer){
var sysVer = my.target['systemVersion'];
if (sysVer) {
return system.numericalCompare(sysVer['ProductVersion'],checkVer);
}
return -1;
}
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;
}
function isServer(){
if(!my.target['systemVersion'].isServer){
return false;
}
return true;
}
function systemHasDVD(){
var obj = system.ioregistry.matchingClass("IODVDBlockStorageDriver");
if (obj) {
return true;
}
return false;
}
function isIntel()
{
if ( system.sysctl('hw.machine') != 'x86' && system.sysctl('hw.byteorder') != '1234')
{
return false;
}
return true;
}
</script>