Plugin Update von alter auf neuer Struktur

Salut,

bei uns steht gerade die Aktualisierung eines Plugins an, ich würde es dazu gerne von der „alten“ Welt (Legacy) in die neue Struktur umziehen (/custom/plugins).

 

Das neue Plugin wird nciht erkannt, muss ich das Legacy-Plugin erst deinstallieren und entfernen? Dabei würde mir aber Datenverlust drohen. Gibt es eine Anleitung für die Pluginmigration?

Hallo,

also erstmal muss das alte Plugin deaktiviert werden. Danach kann man es nach belieben verschieben.

Eine Upgrade Anleitung gibt es tatsächlich: https://developers.shopware.com/developers-guide/plugin-system/

Der Hauptunterschied zwischen den beiden ist jedoch folgender: Es gibt keine Bootstrap.php Datei mehr, die lautet jetzt gemäß dem Plugin Namen (und Namespace) und es gibt eine zentrale statische Methode, bei der man die Events registriert. Events können aber auch mittels services.xml in eigene kleine Klassen ausgelagert werden. Steht alles in der Anleitung.

 

 

MFG

 

derwunner

3 Likes

Hallo, 

ich stehe gerade vor dem gleichen Schritt und möchte ein Theme-Plugin von der alten in die neue Plugin-Struktur übergeben. 

Dazu habe ich ein Theme-Plugin in meiner Entwicklungsumgebung in den neuen Plugin-Container (neue Plugin-Struktur 5.2) verfrachtet und eine neue höhere Versionsnummer vergeben. Nach dem Hochladen, so dachte ich, stünde dann ein Update im Plugin-Manager auf die neue Version mit der neuen Plugin-Struktur. Dann einfach update klicken und das wars. Scheinbar nicht…

Erst nachdem ich das alte Plugin-Theme deinstalliert habe, hat der Plugin-Manager das neue Plugin-Theme mit der höheren Versionsnummer gefunden. Das kann aber nicht der Weg sein. Beim Deinstallieren verlieren alle Themes ihre Theme-Konfigurationen , sodass ein Umstieg für den Kunden gar nicht möglich wäre.

Was nun?

Eigentlich geht das automatisch.

Habe es nur in meiner Entwicklungsumgebung getestet. Traue mich so nicht wirklich das in den Store zu laden. Gibt es da Unterschiede?

Es waren definitiv beide Plugins hochgeladen und in den entsprechenden Ordnern und beide verwenden auch denselben technischen Namen. Es war auch kein Fehler in der neuen Version mit der neuen Plugin-Struktur, da ich diese ja installiert habe, nachdem ich das aktive alte Plugin-Theme Deinstalliert und gelöscht habe.

[@Stephan Pohl](http://forum.shopware.com/profile/2/Stephan Pohl “Stephan Pohl”)‍

Habt ihr da eine Idee woran das liegen könnte? Habe die neue Version (neue Plugin-Struktur) auch mal in einem Live-Shop hochgeladen - wird aber nicht erkannt. Erst wenn ich die alte Version (alte Plugin-Struktur) lösche.

Habt ihr schon mal versucht, das ganz einfach über den Plugin-Manager zu machen?

Also die neue Plugin-Version (mit neuer Nummer) als ZIP packen (genau wie beim hochladen im Store) und beim Plugin-Manager den Button “Plugin hochladen” benutzen. Wenn der Name gleich bleibt, tauscht Shopware das automatisch aus. Sollte ja kein Problem sein, dass auf einer Testumgebung (sollte dazu gehören) mal durchzuspielen.

1 Like

Also zwei mal das selbe Plugin mit dem gleichen Namen installiert zu haben, funktioniert nicht. Außer ihr habt wirklich alles umbenannt, bis auf den Plugin Namen selbst, dann vielleicht. Macht aber auch keinen Sinn, wozu braucht man das?

Einfach umziehen per Copy & Paste nach custom/plugins funktioniert ebenfalls nicht. Nach der neuen Plugin Struktur gibt es keine Bootstrap.php usw. mehr. Steht aber alles in dem von mir bereits geposteten Doku Link. Also: Upgrade Guide lesen und verstehen, das würde so manche Frage erübrigen.

Außerdem: Klar gehen die Theme Variablen verloren, weil das dann hinterher zwei unterschiedliche Plugins mit zwei unterschiedlichen Plugin IDs in der Datenbank sind. Was man aber machen kann: Theme Konfiguration dumpen (ich denke das müsste php console sw:theme:dump:configuration sein) und dann die Less Variablen von web/cache/config_{shopID}.json in die Theme.php übertragen, sodass die geänderten Werte als Standard definiert werden.

1 Like

@R4M‍

Das könnte natürlich sein. Dass es beim Hochladen über den Plugin-Manager ausgetauscht wird. Ich habe nur über ein Deployment die neue Version mit der neuen Struktur in den richtigen Ordner “geschmissen” :stuck_out_tongue_winking_eye: Das teste ich mal.

 

@derwunner‍

Also zwei mal das selbe Plugin mit dem gleichen Namen installiert zu haben, funktioniert nicht. Außer ihr habt wirklich alles umbenannt, bis auf den Plugin Namen selbst, dann vielleicht. Macht aber auch keinen Sinn, wozu braucht man das?

Das zweite (neue Plugin) wurde ja nicht einmal angezeigt bis das alte nicht gelöscht war. Daher waren diese auch nicht gleichzeitig installiert. Technischer Name ist korrekt.
 

Einfach umziehen per Copy & Paste nach custom/plugins funktioniert ebenfalls nicht. Nach der neuen Plugin Struktur gibt es keine Bootstrap.php usw. mehr. Steht aber alles in dem von mir bereits geposteten Doku Link. Also: Upgrade Guide lesen und verstehen, das würde so manche Frage erübrigen.

Das ist schon klar, oben steht ja auch, dass es eine lauffähige Version in neuer Plugin-Struktur und mit selbem technischen Namen ist :stuck_out_tongue_winking_eye:

Außerdem: Klar gehen die Theme Variablen verloren, weil das dann hinterher zwei unterschiedliche Plugins mit zwei unterschiedlichen Plugin IDs in der Datenbank sind. Was man aber machen kann: Theme Konfiguration dumpen (ich denke das müsste php console sw:theme:dump:configuration sein) und dann die Less Variablen von web/cache/config_{shopID}.json in die Theme.php übertragen, sodass die geänderten Werte als Standard definiert werden.

Das sollte dann aber nicht passieren, wenn das ganze mit dem Plugin-Manager hochladen klappt, wie @R4M‍ sagt, oder? Naja ich werde es testen.

 

@zenit schrieb:

Das sollte dann aber nicht passieren, wenn das ganze mit dem Plugin-Manager hochladen klappt, wie @R4M‍ sagt, oder? Naja ich werde es testen.

Was hat das mit dem Plugin Manager zu tun? Es ist erstmal völlig egal wie das Plugin ins Dateisystem kommt. Das kann per FTP, SSH, whatever sein. Entscheidend ist, dass das Theme in einem anderen Plugin steckt. Somit sind das zwei unterschiedliche Themes und zwei unterschiedliche Less Variablen Definitionen. 

1 Like

@derwunner‍

Ich will das andere ja nicht deinstallieren. Die haben beide den selben technischen Namen. Wieso sollte es dann in der Datenbank anders gespeichert werden?

Prinzipiell soll ja nur ein Update durchgeführt werden wobei halt auch die Plugin-Struktur geändert wird und im Dateisystem woanders liegt. Das Plugin bleibt dabei jedoch das gleiche mit selbem technischen Namen usw. Oder nicht?

 

Was hat das mit dem Plugin Manager zu tun?

Vor einiger Zeit stand ich vor dem fast ähnlichen Problem. Ein altes Plugin sollte durch ein neues ersetzt werden. Per FTP hatte ich das nicht so recht funktioniert. Mein Shopware User aus diesem Forum meinte dann, ich solle mal das Plugin als ZIP so hochladen. Dann hatte es funktioniert. Und genau darauf bezog sich meine Antwort. 

1 Like

@R4M‍

Also ich habe es nun gestestet:

Durch den Upload über den Plugin-Manager funktioniert es!   Das Plugin-Theme in der alten Ordnerstruktur wird entfernt. Der Plugin-Manager erkennt  das Update. Die Theme-Konfiguration bleibt erhalten. Alles gut 

Vielen Dank euch allen für euren Input!