463 | | Bei SARs handelt es sich nur um ZIPs mit etwas Smalltalk Quellcode (preamble, postscript Dateien). Ihr könnt sie einfach von Hand erstellen. Daher wäre es schön, wenn ihr einfach alles in ein ZIP packt, die 1-2 Zeilen Code zum Laden des MCZ Packages schreibt und dann gebündelt in einem SAR abgebt. Denkt daran, dass ihr auch Ressourcen wie Bilder und Audiodateien mit reinpackt und beim Installieren des SARs extrahiert. |
464 | | |
465 | | Hier findet ihr grundlegende Informationen und Tools, die euch bei der Erstellung helfen: |
466 | | |
467 | | [http://www.visoracle.com/squeak/faq/sar-installer.html SAR-Installer HowTo] |
468 | | |
469 | | [http://wiki.squeak.org/squeak/3324 SAR-Installer Dokumentation] |
| 463 | Der Quelltext soll in Form eines SAR-Archives abgegeben werden, da so |
| 464 | auch externe Ressourcen mit verpackt werden können. |
| 465 | |
| 466 | Da es sich bei einem SAR-File eigentlich nur um ein ZIP-File handelt |
| 467 | (mit einer speziellen Preamble, die beim Installations-Vorgang |
| 468 | ausgeführt wird), könnt ihr es direkt im Image erstellen. Als Beispiel |
| 469 | hier ein Snippet, das wir für unser Koans-Projekt benutzt haben: |
| 470 | |
| 471 | {{{ |
| 472 | |package| |
| 473 | |
| 474 | package := 'Koans'. |
| 475 | |
| 476 | zip := ZipArchive new. |
| 477 | mczStream := RWBinaryOrTextStream on: (String new: 10000). |
| 478 | workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package). |
| 479 | version := workingCopy newVersion. |
| 480 | version fileOutOn: mczStream. |
| 481 | (zip addString: mczStream contents as: package , '.mcz') desiredCompressionLevel: 0. |
| 482 | zip addString: 'self fileInMonticelloZipVersionNamed: |
| 483 | ''' , package , '.mcz''.' as: 'install/preamble'. |
| 484 | zip writeToFileNamed: package , '.sar'. |
| 485 | }}} |
| 486 | |
| 487 | Es schreibt einfach die aktuelle Working-Copy des Monticello-Packages |
| 488 | "Koans" in das SAR-File. Dabei wird eine neue Monticello-Version eures |
| 489 | Packages erstellt. Falls ihr noch externe Resourcen für euer Spiel |
| 490 | benötigt, könnt ihr diese folgendermaßen zum Archiv hinzufügen. |
| 491 | |
| 492 | {{{ |
| 493 | |package folder| |
| 494 | |
| 495 | package := 'Koans'. |
| 496 | folder := 'KoanResources'. |
| 497 | |
| 498 | zip := ZipArchive new. |
| 499 | mczStream := RWBinaryOrTextStream on: (String new: 10000). |
| 500 | workingCopy := MCWorkingCopy forPackage: (MCPackage new name: package). |
| 501 | version := workingCopy newVersion fileOutOn: mczStream. |
| 502 | (zip addString: mczStream contents as: package, '.mcz') desiredCompressionLevel: 0. |
| 503 | zip addTree: Smalltalk imagePath match: [:e | e fullName startsWith: |
| 504 | Smalltalk imagePath , FileDirectory slash , folder]. |
| 505 | zip addString: 'self fileInMonticelloZipVersionNamed: ''' , package, '.mcz''. |
| 506 | (self membersMatching: ''' , folder , FileDirectory slash , '*.*'') do: [ :f | self |
| 507 | extractMember: f].' as: 'install/preamble'. |
| 508 | zip writeToFileNamed: package , '.sar'. |
| 509 | }}} |
| 510 | |
| 511 | Hierbei werden alle Dateien im Unterverzeichnis "KoanResources" (im |
| 512 | Contents/Resources Verzeichnis des Images) hinzugefügt und beim |
| 513 | Installieren wieder extrahiert. Einzelne Dateien könnt ihr mittels "zip |
| 514 | addFile: pathToFile as: fileName" hinzufügen. |
| 515 | |
| 516 | Weitere Informationen und Anleitungen siehe [http://wiki.squeak.org/squeak/3324 SARInstaller Dokumentation]. |