Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Platzierung eines VBScriptes an bestimmter Stelle


4 replies to this topic

skontox

skontox
  • Full Members
  • 3 posts

Posted 23 January 2008 - 09:44

Guten Morgen,
ich habe nach längeren Forschen und Ausprobieren mich entschlossen mein Problem hier zu schildern ;-). Komme leider nicht auf das Ergebnis was ich haben möchte.

Ich benutze Installshield 12.
Es geht um ein "Basic MSI" Projekt.

Ich habe ein VBScript unter "Verhalten und Logik" -> "Benutzerdefinierte Aktionen" erstellt. Dieses Skript löscht die Ordnerstruktur auf dem Zielsystem, die innerhalb der Installation auf dem Zielsystem angelegt werden wird.

Da Installshield standardmäßig nur die Dateien löscht, die er auch installiert hat. Sprich nicht die, die man dort manuel noch hinzugefügt hat. Habe ich mich entschieden diese Ordner immer vorab durch ein Skript zu löschen.

Leider habe ich es nicht hinbekommen, dieses Skript an einer bestimmten Stelle ausführen zu lassen. Ich wollte das Skript genau nach dem Deinstall des Vorgänger Paketes aktiviert haben.

Sprich der Installer fängt an und checkt, ob Vorgängersoftware (related Produkt) vorhanden ist und deinstalliert diese komplett. Exakt danach sollen die Ordner über das Skript gelöscht werden. Falls kein Deinstall des Vorgängers ausgeführt wird, da es keinen gibt, soll das Skript natürlich sofort am Anfang der eigentlichen Installation erfolgen. Aber auch nur da und nur einmal.

Als erstes wurde das Skript direkt am Anfang ausgeführt und zieht dann natürlich dem Deinstall der Vorgängerversion die Beine weg. Sprich COM-Komponenten können nicht mehr aus der Registrierung (Registry) entfernt werden, da die dll's dann schon nicht mehr in dem Verzeichnis vorhanden sind.


Habe dann folgendes versucht:

unter Benutzerdefinierte Aktionen dem Skript auf dem Allgemein-Reiter folgendes einzustellen:

Rückgabeverarbeitung: Synchron (Exit-Code prüfen)
In-Script-Ausführung: Sofortige Ausführung
Ausführungsplan: Nur einmal
64-Bit-Scripting verwenden: Nein
UI-Sequenz installieren: <Nicht in Sequenz>
Ausführungssequenz installieren: Nach RemoveExistingProducts
Ausführungbedingung installieren:
Ausführungssequenz anbieten: <nicht in Sequenz>
UI-Sequenz verwalten: <Nicht in Sequenz>
Ausführungssequenz verwalten: <Nicht in Sequenz>
...

Leider wird dann das Skript nur bei der Deinstallation des aktuellen Paketes ausgeführt und nicht bei der Deinstallation des Vorgängerpaketes.


Könnte mir hier vieleicht jemand einen Tip geben, was ich tun muss, um mein Skript genau nach dem Deinstall des alten Paketes und der Neuintsallation des aktuellen Paketes auszuführen?

Herzliche Dank
Gruß skontox


mkkk

mkkk
  • Full Members
  • 63 posts

Posted 23 January 2008 - 10:54

Ich würde versuchen das Script direkt vor InstallFiles in der Ausführungssequenz mit der Bedingung IS_MAJOR_UPGRADE zu platzieren.

Ich vermute Du machst ein Großes Upgrade wenn die alte Software vorher deinstalliert werden soll.

skontox

skontox
  • Full Members
  • 3 posts

Posted 23 January 2008 - 15:55

Besten Dank für die Antwort!
Leider funktioniert das noch nicht richtig bei mir (auch mit der Änderung) ;-(

Es wird immer erst nur beim Deinstallieren des aktuell zu erstellenden Paketes aktiv. Also nicht beim Anfang zwischen deinstall des alten Paketes.

Was genau muss ich einstellen auf dem Reiter "Allgemein" zu dem Skript (unter Benutzerdefinierte Aktionen), damit das wirklich klappt?

Er führt das Script nun einmal beim Begin des Setups aus und leider auch beim Deinstall. Das soll er aber nicht machen.

Anbei ein Screenshot von den Einstellungen des VBScriptes "DeleteAll"

Besten Dank!

Gruß skontox

Attached Images

  • screenshot.jpg


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 24 January 2008 - 11:14

Also, die im Screenshot dargestelle Sequenzierung (nach MoveFiles usw.) macht keinen Sinn. Zurück zu den Einstellungen in deinem ersten Post: wenn die Aktion nur in der Install Execute Sequenz ist (okay) dann sollte der Ausführungsplan auf "immer" stehen. Zusätzlich musst du eine Bedingung angeben:
Not Installed

skontox

skontox
  • Full Members
  • 3 posts

Posted 25 January 2008 - 11:55

Einen Herzlichen Dank an Euch beide.
Habe es nun Dank Eurer Hilfe endlich geschaft. ;-)
Ein super Forum hier!

Das Skript läuft genau zwischen der Deinstallation des alten Paketes (falls vorhanden) und der Neuinstallation ab. Und nun auch nur bei einer Installation und nicht beim Deinstallieren.

Falls jemand das selbe Problem hat, hier nochmal ein Screenshot von meinen letzten funktionstüchtigen Einstellungen zu dem Skript (Benutzerdefinierte Aktion) in Installshield.

Danke nochmal an Euch beide!


siehe hier:

Attached Images

  • ready.jpg