SetLockBitAtomSample.r

/*
    File:       SetLockBitAtomSample.r
 
    Contains:   Install application "TheProgram" into the "Root directory and lock the file.
                For this sample, I use TeachText as the program to install and lock.
                Demonstrates implementation of an action atom.
                
                You can build the script with the following lines:
 
                rez  -o "SetLockBitAtomSample" -t 'bjbc' -c 'bjbc' "SetLockBitAtomSample.r"
                setfile -a i "SetLockBitAtomSample"
                scriptcheck -p "SetLockBitAtomSample"
    
    Written by: Rich Kubota 
 
    Copyright:  Copyright © 1992-1999 by Apple Computer, Inc., All Rights Reserved.
 
                You may incorporate this Apple sample source code into your program(s) without
                restriction. This Apple sample source code has been provided "AS IS" and the
                responsibility for its operation is yours. You are not permitted to redistribute
                this Apple sample source code as "Apple sample source code" after having made
                changes. If you're going to re-distribute the source, we require that you make
                it clear in the source that the code was descended from Apple sample source
                code, but that you've made changes.
 
    Change History (most recent first):
                8/18/1999   Karl Groethe    Updated for Metrowerks Codewarror Pro 2.1
                
 
*/
 
#include "Types.r"
#include "InstallerTypes.r"
 
/* 'inaa' code resource definition */
#define     aaCodeID            10000
 
/* put a 1 in the creation date field of source 'infs' to have ScriptCheck set date */
#define kScriptCheckSetsDate    0x01
 
/* Definitions for the file spec atoms (specifications for source and destination files) */
#define fsSourceProgram         2000
#define fsTargetProgram         2001
 
/* This is the name of the source disk */
#define ProgramDisk "Program Disk:"
 
/* where we want to install our file. */
#define TargetPath  ":"
 
/* Definition for the package. */
#define pkTheProgram            3000
 
/* Definition for the file atom */
#define faProgram               4000
 
/* Definition for the package comment resource */
#define cmtTheProgram           5000
 
/* Definitions for the action atom resources */
#define aaSetLockBit            6000
 
/* June 16, 1992 is the current release date I put in 'icmt' rsrcs. ScriptCheck will convert */
/* this value to a LongInt seconds value needed by the Installer. */
#define currentReleaseDate      6161992     
#define currentVersion          100     /* Version 1.0 goes in the 'icmt' rsrc */
 
#define iconTheProgram          5100
 
/************************** Easy Install Rule resources **********************************/
 
/***************************** Package Resources ************************************************/
resource 'inpk' (pkTheProgram) {
    format0 {
        ShowsOnCustom,              /* Package appears in the Custom Install display */
        Removable,                  /* Package can be removed */
        dontForceRestart,           /* no need to restart */
        cmtTheProgram,              /* package's 'icmt' resource id */
        0,                          /* Package size (filled in by ScriptCheck) */
        "TheProgram", {             /* package name for package that shows on custom */
            'infa', faProgram;
            'inaa', aaSetLockBit;
        }
    }
};
 
/***************************** Comments ************************************************/
resource 'icmt' (cmtTheProgram) {
    currentReleaseDate,
    currentVersion,
    iconTheProgram,
    "This package contains TheProgram. "
};
 
resource 'ICON' (iconTheProgram) {
        $"0430 4000 0A50 A000 0B91 1002 0822 0803"
        $"1224 0405 2028 0209 4010 0111 800C 00A1"
        $"8003 FFC2 7E00 FF04 0100 7F04 0300 1E08"
        $"04E0 000C 08E0 000A 10E0 0009 08C0 0006"
        $"0487 FE04 0288 0104 0188 0084 0088 0044"
        $"0088 0044 0088 00C4 0110 0188 0228 0310"
        $"01C4 04E0 0002 0800 73BF FBEE 4CA2 8A2A"
        $"40AA AAEA 52AA AA24 5EA2 8AEA 73BE FB8E",
};
 
 
/********************************************* File Specs ******************************************/
/* Source File Specs */
resource 'infs' (fsSourceProgram) {
    'APPL',                             /* File Type */
    'ttxt',                             /* Creator */
    kScriptCheckSetsDate,               /* ScriptCheck fills in the creation date */
    noSearchForFile,                    /* Do not search the source disk for the file */
    TypeCrMustMatch,                    /* file type and creator on source disk must match */
    ProgramDisk"TeachText"              /* Path to the file */
};
 
/* Target File Specs */
resource 'infs' (fsTargetProgram) {
    'APPL',                             /* File Type */
    'ttxt',                             /* Creator */
    0,                                  /* creation date not needed for target file specs */
    noSearchForFile,                    /* Do not search the target disk for the file */
    TypeCrMustMatch,                    /* not needed for target file specs */
    TargetPath"TeachText"               /* destination Path */
};
 
/******************************************** File Atoms ************************************************/
resource 'infa' (faProgram) {
    format0 {
        delRemove,                      /* Delete the file if remove (option-custom) is clicked */
        delInstall,                     /* Delete the target before copying new one */
        copy,                           /* Copy the file to the destination */
        leaveAloneIfNewer,              /* do not Install this version, if newer one exists */
        noKeepExisting,                 /* Always replace an existing copy */
        copyIfNewOrUpdate,              /* Copy whether the target file exists or not */
        rsrcFork, dataFork,             /* Copy both forks of the file */
        fsTargetProgram,                /* TARGET file spec for this file */
        fsSourceProgram,                /* SOURCE file spec for this file */
        0,                              /* atom size (filled in by ScriptCheck) */
        ""                              /* Atom Description (Installer will use file name) */
    };
};
 
 
resource 'inaa' (aaSetLockBit) {
    format0 {
        actAfter,
        dontActOnRemove,
        actOnInstall,
        'infn',
        aaCodeID,
        fsTargetProgram,                /* pass in the 'infs' resource ID of the file to lock */
        "Set Locked Bit of Target file based on target infs resource ID"
    }
};
 
INCLUDE "SetLockBit.rsrc" 'infn' (10000) AS 'infn' (aaCodeID, $$Attributes);