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

Selbstkopie von .msi und .cab-Dateien


8 replies to this topic

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 06 February 2009 - 10:34

Hallo,

ich habe unter WixEdit es geschafft, mich unter dem Installieren das MSI selbst zu kopieren.

Hintergrund ist folgender, dass das Paket sowohl die Server als auch das ClientSetup enthält und ausgewählt werden kann. Da ich nun nur ein Paket habe, muss ich es ins Programmverzeichnis kopieren, damit sich dort der Client das Paket abholt und dann installiert. Unter Vista habe ich als normaler Benutzer nicht das Recht, dass ich ins Programmverzeichnis schreibe bzw wird in einer Schattenkopie abgelegt.

Daher meine Frage, ist es auch bei InstallShield möglich, mich während des Installationsprozesses selbst zu kopieren (.msi + .cab - Datei)?

Gruß Christoph

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 09 February 2009 - 16:14

Ich wüsste nicht warum das nicht auf die geleiche Weise funktionieren sollte.

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 10 February 2009 - 09:34

Ich habs mir jetzt nochmal angeschaut.

Es gibt vorher ein Script, dass die Installationspakete ins Datenverzeichnis schaufelt und von dort aus kopiere ich die Dateien um. Ich habe mir das vorhandene Paket auch nochmal mit InstallShield geöffnet und darin gespickt. Es handelt sich dabei um einen Eintrag in der MoveFile-Tabelle.

Da ich nun aber einiges sauberer machen möchte und nicht so "reingehackt" wie beim WixEdit, habe ich mir dafür 2 Verzeichnisse (msiSource und msiDest) angelegt bei "Dateien und Ordner" auf der Oberfläche. Diese setzte ich mit Custom Actions (neues festgelegtes Verzeichnis). In der Logdatei kann ich auch sehen, dass die Verzeichnisse richtig gesetzt wurden.

Der Eintrag in der Tabelle MoveFile sieht so aus:

FileKey: CopyMsi
Component: Server (Komponente existiert und der Service, der auch dabei ist, wurde installiert)
SourceName: *
DestName: Diese Feld ist leer
SourceFolder: MSISOURCE
DestFolder: MSIDEST
Options: 0 (bedeutet laut Hilfe, dass die Dateien kopiert werden)

Das log sieht bei der Aktion folgendermaßen aus:

MSI (s) (08:04) [17:50:20:093]: Doing action: MoveFiles
Aktion 17:50:20: MoveFiles. Dateien werden verschoben
Aktion gestartet um 17:50:20: MoveFiles.
Aktion beendet um 17:50:20: MoveFiles. Rückgabewert 1.

Kann mir wer sagen, wieso dies nicht funktioniert? Kann es sein, dass ich vorher den Ordner anlegen muss, bevor die Dateien kopiert werden? Den DestFolder gibts auf dem System noch nicht. Oder muss ich hier was anderes beachten? Die Hilfe hilft mir hier leider nicht mehr weiter.

Gruß Christoph

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 February 2009 - 11:53

Probiers doch mal mit *.* statt *

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 10 February 2009 - 11:56

Laut Hilfe sollte * allerdings funktionieren.

Irgendwie scheint er keine passenden Dateien zu finden. Ist MSISOURCE auch in der Execute-Sequenz richtig gesetzt (Liste der Proeprty-Werte mit (s) im Log)?

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 10 February 2009 - 15:23

Hallo Stefan,

ich hab mir jetzt nochmal Alles genau angesehen, habe auch einen Leichtsinnsfehler gefunden, ein Property war falsch gesetzt, Welches ich in der Custom Action zum setzten des Verzeichnisses hernehme.

Jedoch stimmen jetzt die ganzen Pfade und kopiert wird trotzdem nichts...
Die Logdatei habe ich nochmal durchforstet und ich hab die Ausschnitte zusammengesucht mit der zugehörigen Action.

Was mir jetzt aufgefallen ist, warum steht bei RegisterProduct auf einmal wieder der falsche Wert drin, obwohl vorher nichts mit der msidest-Variable gemacht habe? Da müsste ja ein wert mit C:\Programme... drinnenstehen! Oder habe ich sonst irgendwas falsch gemacht?

Aktion gestartet um 15:11:21: CostFinalize.
MSI © (0C:A0) [15:11:21:953]: PROPERTY CHANGE: Adding MSISOURCE property. Its value is 'C:\msiSource\'.
MSI © (0C:A0) [15:11:21:953]: PROPERTY CHANGE: Adding MSIDEST property. Its value is 'C:\msiDest\'.
MSI © (0C:A0) [15:11:22:031]: Dir (target): Key: MSISOURCE , Object: C:\msiSource\
MSI © (0C:A0) [15:11:22:031]: Dir (target): Key: MSIDEST , Object: C:\msiDest\

Aktion gestartet um 15:11:22: ExecuteAction.
MSI (s) (A0:80) [15:11:22:703]: PROPERTY CHANGE: Adding MSIDEST property. Its value is 'C:\msiDest\'.
MSI (s) (A0:80) [15:11:22:734]: PROPERTY CHANGE: Adding MSISOURCE property. Its value is 'C:\msiSource\'.

Aktion gestartet um 15:11:23: CostFinalize.
MSI (s) (A0:80) [15:11:23:250]: Dir (target): Key: MSISOURCE , Object: C:\msiSource\
MSI (s) (A0:80) [15:11:23:265]: Dir (target): Key: MSIDEST , Object: C:\msiDest\

MSI (s) (A0:80) [15:11:23:359]: Doing action: setMsiSource
Aktion 15:11:23: setMsiSource.
Aktion gestartet um 15:11:23: setMsiSource.
MSI (s) (A0:80) [15:11:23:375]: PROPERTY CHANGE: Modifying MSISOURCE property. Its current value is 'C:\msiSource\'. Its new value: 'C:\Firmenname\Produkt\update\msi\msi.039.1.1-2\'.
Aktion beendet um 15:11:23: setMsiSource. Rückgabewert 1.

MSI (s) (A0:80) [15:11:23:375]: Doing action: setMsiDest
Aktion 15:11:23: setMsiDest.
Aktion gestartet um 15:11:23: setMsiDest.
MSI (s) (A0:80) [15:11:23:390]: PROPERTY CHANGE: Modifying MSIDEST property. Its current value is 'C:\msiDest\'. Its new value: 'C:\Programme\Firmenname\Produkt\update\msi.039.1.1-2\'.
Aktion beendet um 15:11:23: setMsiDest. Rückgabewert 1.

MSI (s) (A0:80) [15:12:54:171]: Doing action: MoveFiles
Aktion 15:12:54: MoveFiles. Dateien werden verschoben
Aktion gestartet um 15:12:54: MoveFiles.
Aktion beendet um 15:12:54: MoveFiles. Rückgabewert 1.

RegisterProduct: Produkt wird registriert
MSI (s) (A0:80) [15:13:02:843]: Dir (source): Key: MSISOURCE , Object: C:\Firmenname\Produkt\newupdate\msi.039.01.01-02\msiSource\ , LongSubPath: msiSource\ , ShortSubPath: MSISOU~1\
MSI (s) (A0:80) [15:13:02:843]: Dir (source): Key: MSIDEST , Object: C:\Firmenname\Produkt\newupdate\msi.039.01.01-02\msiDest\ , LongSubPath: msiDest\ , ShortSubPath:

Property(S): MSIDEST = C:\Programme\Firmenname\Produkt\update\msi.039.1.1-2\
Property(S): MSISOURCE = C:\Firmenname\Produkt\update\msi\msi.039.1.1-2\

Neustartaufforderung

Property©: MSISOURCE = C:\msiSource\
Property©: MSIDEST = C:\msiDest\

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 11 February 2009 - 13:36

Aha, MSISOURCE und MSIDEST sind also nicht nur Properties sondern stehen auch in der Tabelle Directory. Die Aktion CostFinalize übernimmt die Property-Werte in die entsprechenden Directory-Einträge. Wenn du Verzeichnisse nach CostFInalize noch ändern willst, geht das nicht mit Custom Action Typ 51 (Property setzen) sondern mit Typ 35 (Directory setzen). Also prübier es entweder mit dem anderen Custom Action Typ, oder setze die Properties vor CostFinalize (letzteres wird empfohlen)

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 11 February 2009 - 15:46

Die Aktionen sind aber -> rechtsklick auf CustomAction -> neues festgelegtes Verzeichnis.

Von daher dürfte es kein Problem sein, ich ändere die Verzeichnisse ja...

Ich werde es mir aber einmal ansehen, wenn ich die Propertys vorher setzte und gebe morgen dann eine Rückmeldung.

Gruß Christoph

cheese-2402

cheese-2402
  • Full Members
  • 45 posts

Posted 12 February 2009 - 14:39

So, ich habe es mal ausprobiert, es funktioniert irgendwie überhaupt nicht.

Die beiden Ordner, also msiSource und msiDest habe ich bei "Dateien und Ordner" unter "Zielcomputer" eingefügt.

Jetzt habe ich einfach den leichtesten Fall getestet, ich habe keine Ordnerpfade gesetzt und den Defaultwert "C:\msiSource\" bzw "C:\msiDest\" gelassen. Habe in den Quellpfad eine txt-Datei eingefügt und dann das Setup ausgeführt. Die Datei wird nicht kopiert.

Jetzt weiß ich nicht, ob es daran liegt, dass die Dateien außerhalb den Pfaden der eigentlich Installation liegt?

Irgendwie bin ich total am verzweifeln, weil ich inzwischen Alles probiert habe, egal ob Property setzen, Verzeichnis setzen etc.. nichts hat funktioniert.

Hat noch irgendwer einen Tipp, wie es funktionieren würde oder würde es helfen, mal das ganze Log zu posten bzw anzuhängen? Hat aber ca 10Mb.

Gruß Christoph