RPMST-Vorlagen

<< Click to Display Table of Contents >>

RayPack > 8.0 > User Guide > Erweiterte Themen 

RPMST-Vorlagen

Eine Transform-Vorlage ist nichts anderes als eine einfache XML-Datei mit der Dateierweiterung .rpmst. Diese Vorlage kann verwendet werden, um eine Transform-Datei zu erstellen, die vordefinierte Informationen enthält, die bei der Erstellung aller mit RayPack erstellten Transform-Dateien angewendet werden. Dies gewährleistet eine einheitliche Basis für alle erstellten Transforms.

 

Struktur der Transform-Vorlage

Nachfolgend finden Sie ein abgekürztes Beispiel einer Transform-Vorlage. Im Wesentlichen enthält jede Transform-Datei, die diese Vorlage verwendet, folgende Elemente:

Ein Feature der obersten Ebene mit dem Namen "Demo_Feature", dem eine Komponente namens "Demo_Branding" zugewiesen ist. Diese Komponente enthält wiederum drei Ressourcen vom Typ Registrierung.  Den Eigenschaften ALLUSERS, ARPNOMODIFY, ARPNOREMOVE, ARPNOREPAIR, REBOOT, RebootYesNo, REBOOTPROMPT, ROOTDRIVE werden Standardwerte zugewiesen. Das Feature und seine Komponente werden nur im Standardinstallationsverzeichnis installiert, wenn das Feature nicht auf dem System vorhanden ist oder eine Neuinstallation (Reparatur) eingeleitet wird. Die Summary Information Stream-Eigenschaften Author, Comments, Subject, Title und Keywords werden ebenfalls auf Standard-/dynamische Werte gesetzt. Beachten Sie, dass alle Sonderzeichen escaped werden müssen. Beachten Sie beispielsweise den Text &lt;PackagerInitials&gt; und wie er mit den Kleiner-als- und Größer-als-Zeichen escaped wurde.      

 

<?xml version="1.0" encoding="UTF-8"?>

<Settings>

  <!-- This is demonstration of transform template configuration. 
  Any tables can be added - just make sure that any tables referenced here are 
  also present in source(vendor) MSI  -->

  <SIS Author="&lt;PackagerInitials&gt;" Comments="Created: $TIME$ - $DATE$" 
       Subject="" Title="$PROJECTNAME$" Keywords="MST Template 1.0.0" />

  <Tables>

    <Table Name="Feature">

 <Row Feature="Demo_Feature" Feature_Parent="" Title="Demo_Branding" 
            Description="Branding Feature" Display="0" Level="1" 
            Directory_="INSTALLDIR" Attributes="16"/>

    </Table> 

    <Table Name="Component">

 <Row Component="Demo_Branding" ComponentId="$GUID$" 
            Directory_="INSTALLDIR" Attributes="4" 
            Condition="NOT Installed OR REINSTALL" 
            KeyPath="Demo_registry1"/>

    </Table>

    <Table Name="FeatureComponents">

 <Row Feature_="Demo_Branding" Component_="Demo_Branding"/>

    </Table>    

    <Table Name="Registry">

        <Row Registry="Demo_registry1" Root="2" 
             Key="Software\Demo\Packages\[ProductName]\[ProductVersion]" 
             Name="*" Value="" 
             Component_="Demo_Branding"/>

        <Row Registry="Demo_registry2" Root="2" 
             Key="Software\Demo\Packages\[ProductName]\[ProductVersion]" 
             Name="-" Value="" 
             Component_="Demo_Branding"/>

        <Row Registry="Demo_registry3" Root="2" 
             Key="Software\Demo\Packages\[ProductName]\[ProductVersion]" 
             Name="Application Name" Value="[ProductName]" 
             Component_="Demo_Branding"/>

    </Table>

    <Table Name="Property">

      <Row Property="ALLUSERS" Value="1"/>

      <Row Property="ARPNOMODIFY" Value="1"/>

      <Row Property="ARPNOREMOVE" Value="1"/>

      <Row Property="ARPNOREPAIR" Value="1"/>

      <Row Property="REBOOT" Value="ReallySuppress"/>

      <Row Property="RebootYesNo" Value="No"/>

      <Row Property="REBOOTPROMPT" Value="S"/>

      <Row Property="ROOTDRIVE" Value="C:\"/>

    </Table>

  </Tables> 

</Settings>

 

Settings-Element

Das Element <Settings> hat keine Attribute und verfügt über zwei untergeordnete Elemente: das Element <SIS> und das Element <Tables>. Obwohl theoretisch möglich, könnten beide untergeordneten Elemente leer sein. Dies würde die Verwendung einer Vorlage sinnlos machen.

 

SIS-Element

Das Element <SIS> kann Attribute enthalten, die im Summary Information Stream vorhanden sind oder sein können, sofern sie als Zeichenkettenwert dargestellt werden können. Es wird empfohlen, nur die im Beispiel gezeigten SIS-Eigenschaften über die Transform-Vorlage festzulegen.

 

Die folgenden Attribute des SIS-Elements werden unterstützt und haben eine direkte Zuordnung zu einer der unterstützten Zusammenfassungseigenschaften (vollständige Liste unter https://msdn.microsoft.com/en-us/library/aa372049(v=vs.85).aspx):

 

Author

CharacterCount

Codepage

Comments

CreateTimeDate

LastPrinted

LastSavedTimeDate

CreatingApplication

Keywords

LastSavedby

PageCount

RevisionNumber

Security

Subject

Template

Title

WordCount

 

Die folgenden zusätzlichen Attribute haben keine direkte Entsprechung zu SIS-Attributen:

 

DatabaseCodepage
Ein numerischer Wert, der die Codepage der gesamten Datenbank darstellt (nicht zu verwechseln mit der SIS-Codepage und mit ProductLanguage).
 

Languages
Eine durch Kommas getrennte Liste numerischer Werte, die unterstützte Sprachen darstellen (im LCID-Format)

 

Platform
Ein Wert, der die Zielplattform des Pakets darstellt.

 

finger1

Hinweis:

Languages und Platform-Werte können kombiniert und als einzelner Wert des Attributs Template durch ein Semikolon getrennt dargestellt werden, zum Beispiel <SIS Template="Intel64;0,1031" ...

 

Tables-Element

Das Element <Tables> hat keine Attribute und 1 bis n untergeordnete Elemente <Table>.

 

Table-Element

Das Element <Table> hat ein Attribut und 1 bis n untergeordnete Elemente <Row>. Das Attribut Name unterscheidet zwischen Groß- und Kleinschreibung und muss eindeutig sein.

Das folgende Beispiel würde angeben, dass die Tabelle Feature bearbeitet werden soll.

<Table Name="Feature">

...

...

</Table>

 

Row-Element

Das Element <Row> kann mehrere Attribute enthalten. Die Attribute entsprechen den Spaltennamen (Groß-/Kleinschreibung beachten) der MSI-Tabelle, die das Attribut Name des übergeordneten Elements <Table> darstellt.

 

<Table Name="Feature">

    <Row Feature="Demo_Feature" 
         Feature_Parent="" Title="Demo_Branding" 
         Description="Branding Feature" 
         Display="0" 
         Level="1"  

         Directory_="INSTALLDIR" 

         Attributes="16"/>

...

...                                

</Table>

 

Bitte stellen Sie sicher, dass alle Spalten mit Werten belegt sind. Wenn ein Spalteneintrag auf leer gesetzt werden soll, verwenden Sie einen leeren Zeichenkettenwert ="".

Wenn die Zeilenvorlage zum Hinzufügen einer neuen Zeile verwendet wird, wird empfohlen, alle Zellenwerte anzugeben. Mindestens müssen die vom MSI-Schema erforderlichen Spalten angegeben werden.

Wenn die Zeilenvorlage zum Bearbeiten einer vorhandenen Zeile verwendet wird, müssen mindestens die Spalten des Primärschlüssels sowie die zu aktualisierenden Spalten angegeben werden.

 

RowUpdate-Element

Das Element <RowUpdate> verhält sich ähnlich wie das Element <Row>.

Der einzige Unterschied besteht darin, dass die von diesem Knoten angegebenen Werte nur eingefügt werden, wenn die Zeile mit der angegebenen ID bereits vorhanden ist. Zum Beispiel die folgende Syntax:

 

<Table Name="Feature">

    <RowUpdate Feature="Demo_Feature" Description="Updated branding Feature" />

</Table>

 

aktualisiert die Beschreibung eines Features Demo_Feature auf "Updated branding Feature". Wenn das Feature nicht vorhanden ist, wird keine Aktion ausgeführt.

 

Bitte stellen Sie sicher, dass alle erforderlichen Spalten, einschließlich der Spalten des Primärschlüssels der Tabelle, mit Werten belegt sind.

 

finger1

Hinweis:

Wie man sehen kann, kann theoretisch jede MSI-Tabelle in der Transform-Datei mithilfe der Transform-Vorlage befüllt werden. Die einzige Ausnahme bilden Streams in den Tabellen Binary und Icon, die in einer speziellen RPMST-Syntax dargestellt werden müssen.

 

Ersetzbare Token

Die Transform-Vorlage unterstützt auch Token, die bei der Erstellung einer Transform-Datei ersetzt werden können. Allgemein lässt sich ein Token als eine in Dollarzeichen eingeschlossene Zeichenkette identifizieren. Derzeit werden die folgenden Token unterstützt:

 

$TIME$
Die aktuelle Zeit (HH:mm:ss)
 

$DATE$
Das aktuelle Datum (dd/MM/yy)
 

$GUID$
Eine neue GUID (Großbuchstaben, in geschweifte Klammern eingeschlossen)
 

$MACHINENAME$
Der aktuelle Rechnername
 

$PROJECTNAME$
Der aktuelle Projektname

 

$USERNAME$
Der aktuelle Benutzername

 

Um beispielsweise benutzerdefinierte Eigenschaften ProjectCreatedOn und ProjectCreatedBy hinzuzufügen, die standardmäßig mit dem aktuellen Datum, der Uhrzeit und dem Ersteller des Projekts befüllt werden sollen, kann folgender Codeausschnitt verwendet werden:

 

<Table Name="Property">

 <Row 

         Property="ProjectCreatedOn" 

         Value="$DATE$ $TIME$" />

 <Row 

         Property="ProjectCreatedBy" 

         Value="$USERNAME$ on $MACHINENAME$" />

</Table>

 

Binäre Streams

Die RPMST-Syntax unterstützt Stream-Zellen. Der Stream muss als base64-kodierte Zeichenkette dargestellt werden, die den binären Inhalt des Streams repräsentiert. Es wird empfohlen, einen Stream einfach mit RayPack hinzuzufügen und dann die RPMST-Vorlage zu exportieren, anstatt binäre Werte manuell zu erstellen.

 

Nachfolgend finden Sie ein Beispiel für die Definition eines Streams in der Vorlage:

 

<Settings>

  <Tables>

    <Table Name="Binary">

      <RowUpdate Name="Binary1" Data="MzNERC0zQjgyLTAxQjEtMzNFMC02MEQy" />

    </Table>

  </Tables>

</Settings>

 

finger1

Achtung:

Stream-Zellen unterstützen keine ersetzbaren Token.

 

Praxisbeispiel: ActiveSetup

Der folgende Codeausschnitt kann verwendet werden, um erforderliche Active Setup-Einträge automatisch hinzuzufügen:

 

<Settings>

  <Tables>

    <Table Name="Feature">

      <Row Feature="ActiveSetup" Title="Active Setup" Description="A feature for Active Setup

      components" Display="0" Level="1" Attributes="16" />

    </Table>

    <Table Name="Registry">

      <Row 
        Registry="ActiveSetup_Default" 
        Root="2" 
        Key="SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode]" 
        Value="[ProductName] [ProductVersion]" 
        Component_="ActiveSetup" />

      <Row 
        Registry="ActiveSetup_Version" 
        Root="2" 
        Key="SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode]" 
        Name="Version" 
        Value="1,0,0,0" 
        Component_="ActiveSetup" />

      <Row 
        Registry="ActiveSetup_StubPath" 
        Root="2" 
        Key="SOFTWARE\Microsoft\Active Setup\Installed Components\[ProductCode]" 
        Name="StubPath" 
        Value="msiexec.exe /fpums [ProductCode] /qn " 
        Component_="ActiveSetup" />

    </Table>

    <Table Name="Component">

      <Row 
        Component="ActiveSetup" 
        ComponentId="*" 
        Directory_="TARGETDIR" 
        Attributes="4" 
        KeyPath="ActiveSetup_StubPath" />

    </Table>

    <Table Name="FeatureComponents">

      <Row 
        Feature_="ActiveSetup" 
        Component_="ActiveSetup" />

    </Table>

  </Tables>

</Settings>

 

finger1

Hinweis:

Diese und einige weitere Beispiele sind standardmäßig im folgenden Ordner verfügbar: <PackPoint>\Templates\Custom.