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

OnInstallingFile in Install Script Project


7 replies to this topic

tftools

tftools
  • Full Members
  • 22 posts

Posted 26 October 2006 - 21:39

Hallo, wer kann helfen!

Habe vor einiger Zeit mit IS10.5 eine kleines feines InstallScript Projekt gebaut und muss diese nun erweitern.
Dies bedeutet für das Setup, dass es auf dem lokalen PC unbedingt im Verz. "C:\Programme\Gemeinsame Dateien\Designer" alle darin vorhandenen Dateien löschen soll.
Wie mache ich dies am besten per Scriptbefehl, bevor die eigentliche Installation los geht. Habe in dieser Beziehung leider Null Ahnung!!

Dieser Code funktioniert leider nicht. Sieht jemand wo meine Fehler liegt?;
CODE

// Included header files ----------------------------------------------------
#include "ifx.h"
#define EXAMPLE_DIR "C:\\TEST"

export prototype ExFn_DeleteDir(HWND);

function ExFn_DeleteDir(hMSI)
begin

       // Verzeichnis löschen.  Wenn Verzeichnis nicht
       // leer ist, wird es nicht gelöscht.
       if (DeleteDir (EXAMPLE_DIR, ROOT) = 0) then
           // Erfolg anzeigen.
           MessageBox (EXAMPLE_DIR + " wurde gelöscht.", INFORMATION);
       else
           MessageBox ("Verzeichnis konnte nicht gelöscht werden.", SEVERE);
       endif;
end;
//--------------------------------------------------------------------------


Danke schon mal im Voraus.

Edited by tftools, 27 October 2006 - 14:40.


tftools

tftools
  • Full Members
  • 22 posts

Posted 29 October 2006 - 12:04

Schade schade...es scheint niemand in diesem Forum zu geben, der mir helfen kann!! Schade!!

Edited by tftools, 29 October 2006 - 12:04.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 October 2006 - 13:06

Es wäre leichter dir zu helfen wenn du die Symptome beschreiben würdest. Wird eine der beiden Messageboxen angezeigt? Wird deine Funktion überhaupt aufgerufen (Debugger)? usw.
Übrigens gibt es im InstallScript Projekt kein hMSI. Ruft du die Funktion überhauot irgendwo auf?

tftools

tftools
  • Full Members
  • 22 posts

Posted 31 October 2006 - 13:44

Hallo Stefan,
mein Code geht nicht einmal los. Irgendwie habe ich den in der IS Hilfe gefunden und gedacht mit leichten Änderungen, nutzen zu können. Nein. es passiert garnichts!!

Dabei will ich in meinem InstallScript Projekt nur vor Beginn der gesamten Installation etc. einfach nur die gesamten Dateien des Verz. "C:\Programme\Gemeinsame Dateien\Designer" löschen lassen.

Wie ich aber schon sagte, kam ich bisher bestens ohne Script zu recht, nun aber sehe ich in meinem Projekt keine andere Möglichkeit als per Script die Dateien vorher löschen zu lassen.

Wenn es nichts zuviel verlangt ist, wäre es toll, wenn Du ein Muster hier bereit stellen könntest.
Danke


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 31 October 2006 - 15:17

Es reicht nicht, eine Funktion zu schreiben, du musst sie auch aufrufen - so wie in jeder Programmiersprache. In deinem Fall bietet sich zum Beispiel der Event Handler OnMoving an. In der Skriptansicht befinden sich am oberen Bildrand zwei Comboboxen über die man den Standard-Code in sein Projekt einblenden kann um ihn zu ändern. In der linken Box wählst du "Move Data" aus und dann in der rechten "OnMoving". Der OnMoving Event Handler ist im wesentlichen leer. Du kannst dort deine Funktion aufrufen, oder die paar Zeilen DeleteDir direkt reinschreiben.

tftools

tftools
  • Full Members
  • 22 posts

Posted 31 October 2006 - 20:49

Hallo Stefan,
habe auf Deinen Tipp gehört und befolgt.
Irgendwie ist aber noch ein kleiner Wurm drin.
Die Funktion springt jetzt an, doch in meinen Code ist ja noch ein Fehler. Hier handelte es sich ja nur um ein Muster. Derzeit sieht dieser Code so aus!

CODE

function OnMoving()
  #define EXAMPLE_DIR "C:\Programme\Gemeinsame Dateien\Designer"
begin
       if DeleteDir (EXAMPLE_DIR, ALLCONTENTS) then
       // Erfolg anzeigen.
          MessageBox (EXAMPLE_DIR + " wurde gelöscht.", INFORMATION);
      else
          MessageBox ("Verzeichnis konnte nicht gelöscht werden.", SEVERE);
      endif;


Verzeichnis soll aber in jedem Fall gelöscht werden, passiert aber momentan nicht. Obwohl der IS sagt, dass das verz. gelöscht wäre.

....und ganz wichtig.... Geht dies Funktion auch wirklich vor der Eigentlichen Installation los??

Derzeit habe ich in meinem Projekt:
OnBegin
OnFirstUIBefor
und dann erst OnMoving

Dankle and Cu

Edited by tftools, 31 October 2006 - 20:59.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 November 2006 - 07:59

Backslashes müssen in Quelltext als \\ geschrieben werden. Ändere dein define so ab:
#define EXAMPLE_DIR "C:\\Programme\\Gemeinsame Dateien\\Designer"
Ich bin auch nicht sicher ob das define in der Funktion stehen darf, oder ganz am Anfang des Skripts.

Außerdem solltes du vorher evtl. noch ein ChangeDir machen um sicherzustellen, dass das zu löschende Verzeichnis nicht zufällig das aktuelle Arbeitsverzeichnis ist. Das Verzeichnis darf glaube ich auch nicht im Windows Explorer offen sein.

Wenn das noch nicht hilft teste erst mal mit einem Verzechnis ohne Leerzeichen das der 8.3 Konvention folgt.

Die Reihenfolge, in der die Event-Handler in der Skriptdatei stehen spiel keine Rolle, sie werden vom InstallShield zu gegebener Zeit im Setup-Ablauf aufgerufen. Wie das in Aussieht habe ich mal im Artikel "Event Map for InstallShield 6" auf http://www.installsi...en/ispt_doc.htm visualisiert. Der Artikel ist schon etwas älter, aber in der Hilfe zu IS12 müsste der aktuelle Ablauf auch stehen.

OnMoving wird aufgerufen, nachdem die Dialoge angezeigt wurden aber bevor das Setup beginnt, Dateien zu installieren.



tftools

tftools
  • Full Members
  • 22 posts

Posted 02 November 2006 - 20:06

Danke Stefan,
hast mit allem Recht gehabt.
Habe mich an all Deine Tipps gehalten und sofort Erfolg verzeichnen können.
Dankeschön!!

Schön, dass es solche Forums wie das Deine gibt.

Ciao :-)

Edited by tftools, 02 November 2006 - 20:07.