Hallo Miteinander
Ich habe mich mal der Sache mit dem 3rd. Party Moduleupdating angenommen, da es in diese Richtung von der SF noch keine Lösung gibt. Und weil das kürzlich SF-Update einen so grossen aufwand verursacht hat.
Wie das ganze konkret Funktioniert:
Es wird ein Modulbaustein Importiert, den ihr nach belieben (Zb. Tägl./Wöchentl. Timer) auslösen könnt.
Ihr könnt einen eigenen Update Server definieren, welcher via HTTP(S)-GET zuerst eine meta.xml Datei lädt:
Ein Beispiel:
<modules>
<module id="00b9fa5f-9f02-42a2-9e1c-9c6da7fb4bbf" name="Testmodul" >
<version version="100" sfversion="6.4" file="TestUpdate/6.4/TestUpdate.sfm" hash="42f630fc2e2b10f9b2cf9e692fcc0fc14cde95b5"/>
<version version="112" sfversion="6.4.2.11" file="TestUpdate/6.4/Security_Release_TestUpdate.sfm" hash="ea10679e2720b5391c640d6aea3720765c3a10fe"/>
</module>
<module id="75ad75a3-a423-4c45-b442-9930d2cd7702" name="Testmodul2" >
<version version="260" sfversion="6.1" file="TestUpdate2/6.1/Update_v260.sfm" hash="91c640d6aea3720765c3a10feea10679e2720b53" />
<version version="276" sfversion="6.4" file="TestUpdate2/6.4/Update_v276.sfm" hash="9e692fcc0fc14cde9542f630fc2e2b10f9b2cfb5" />
</module>
</modules>
Die Metadatei Enthält Infos über alle Module, die auf diesem Updateserver sind, sowie welche Updates für welche SF-Versionen zur Verfügung stehen.
Dabei Prüft er zuerst, ob eine Spezifische Version für die SF Vorhanden ist, bevor er immer gröber mit der Suche wird (6.4.2.11, 6.4.2, 6.4, 6)
Findet er ein Modul, dessen SF-Version mit der von der SF passt, prüft er, ob nicht schon die gleiche Version installiert ist. Falls nicht, lädt er das Update.
Danach wird noch eine Hashüberprüfung mit dem im meta.xml Hinterlegten Hash durchgeführt, anschliessend wird das Modul Importiert.
Die Parameter, welche das Modul annimmt:
- http(s) URL (STRING) Target URL
- Get-Arguments (MAP) Attaches those values to URL as get arguments http://?<Key>=<Value>&<Key>=<Value>...<br>[*]AllowRedirect (BOOLEAN) Allow URL-Redirection (302)<br>[*]Module ID (STRING) Type in your module identifiers from your meta.xml<br>[*]Module ID Auto-detect (BOOLEAN) Uses this module UUID as ID<br>[*]Module Version (STRING) The Module version of this module<br>[*]Module Version Auto-Detect (BOOLEAN) Use the Starface module version<br>[*]Manual Starface Version (STRING) Starface version<br>[*]Starface Version Auto-detect (BOOLEAN) Auto-detects the Starface version<br>[*]Starface Version Fuzzy Search (BOOLEAN) Does Fuzzy Search, if the exact version was not found. Example: 6.1.2.3 = Not found looking for => 6.1.2 = Not found looking for => 6.1 = Not found looking for => 6<br>
http://<br>Outputs:<br><woltlab-metacode-marker data-name="list" data-uuid="1237e11b-1c5b-40d6-a07d-813fc74ebb6c" data-source="W0xJU1Rd" /><br>[*]hasError (BOOLEAN) Return True when an Error Occured, while Downloading or Updating an Module. Not finding a module on an updateserver is not an error<br>[*]Errormessage (STRING) Returns the Error Message.<br><woltlab-metacode-marker data-uuid="1237e11b-1c5b-40d6-a07d-813fc74ebb6c" data-source="Wy9MSVNUXQ==" /></p><p><br></p><p>Die Funktion ist so designt, dass ihr auch andere Module (Manuell eine Module_ID eingeben) updaten könnt, ihr könnt also theoretisch ein Installer/Updater Modul bauen welches all eure Module automatisch importiert/updatet.</p><p><br></p><p>Was haltet ihr von diesem Spielzeug? Ich stelle es hier zur Verfügung, nachdem ich noch die letzten Bugs ausgemerzt habe.</p><p><br></p><p>//edit: </p><p><br></p><p>Download: [URL='http://module.si-solutions.ch/metagenerator/Metagenerator.zip']http://module.si-solutions.ch/…nerator/Metagenerator.zip
Target URL ==> GrundURL. Z.b. http://192.168.123.45/update/
Dann muss das Metafile hier liegen: http://192.168.123.45/update/meta.xml
Die XML Pfade sind Relativ zum TargetURl: also z.b. "TestUpdate2/6.4/Update_v276.sfm" ==> http:\\192.168.123.45/update/TestUpdate2/6.4/Update_v276.sfm
Der Hash ist der FileHash vom Typ MD5 (Windows: cmd ==> CertUtil -hashfile [Dateiname], mac: Console ==>MD5 [Dateiname], Linux: md5sum [Dateiname])
//edit: Ordnerstruktur für den Metagenerator:
[ROOT]
Metagenerator.jar
meta.xml <==(Wird hier von Metagenerator.jar erstellt)
Modulname1(Ordner)
________|_______Starface-Version(Ordner)
_________________________|___________Modulname1.sfm
Biespielmodul(Ordner)
________|_______6.4.11(Ordner)
________|___________|___________Beispielmodul_v12.sfm
________|_______6.3(Ordner)
________|___________|___________Beispielmodul_v5.sfm
________|_______6(Ordner)
____________________|___________Beispielmodul_v1.sfm
MfG
Fabian