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

Kopieren immer wider verschiedener Dateien


12 replies to this topic

GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 18 February 2010 - 11:47

Hallo

Vorweg. Ich habe die Setups übernehmen müssen und eigentlich keinen Schimmer von InstallShield 2008.

Ich habe hier ein Setup wo am Ende Dateien 1 zu1 kopiert werden sollen. Dass heisst, es gibt auf der CD ein Ordner /Files/*.* das danach nach ImstallDir/Files/ kopiert werden soll.

Die Dateien in Files können aber immer wieder verschieden heissen oder auch in unterschiedlicher Anzahl vorliegen. Ich kann es also im Setup nicht fest verdraten.

Der Ordner wird also mit Dateien befüllt und danach auf CD gebrannt.

Zur Lösung wurde ein Tool geschrieben das die Aufgabe übernehmen soll. Das macht mich aber gewaltig stutzig. Das sollte doch mit InstallShield ohne externe Hilfe möglich sein. Oder?

Das Tool hat nämlich das Problem das die übergebenen Pfade unter umständen ~1 drin haben. Also 8.3 Notation. Dann fällt das Copy Tool auf die Nase.

Kann InstallShield 2008 Dateien 1 zu 1 kopieren ohne das ich im Setup genau definieren muss welche es sind?

1 Ordner, Dateien rein, und diese kommen in ein Zielordner.

Wenn das geht, wo muss ich da was machen?

tleonhard

tleonhard
  • Full Members
  • 59 posts

Posted 18 February 2010 - 11:57

Hi,

Ich würde es über das InstallScript machen. Hierzu kannst du folgenden Befehl verwenden:
CODE

CopyFile (SrcDir^ "*.*", TargetDir ^ "*.*");


Gruß Timo

ali

ali
  • Full Members
  • 1,008 posts

Posted 18 February 2010 - 12:40

...oder mit Basic MSI

Sind exe oder dll im files im Ordner \Files\?
Einfach mal mit dem Setup-Assistenten die Dateien bzw. den Ordner einbinden. Der Assistent wird dann die Dateien evtl. mit dynamic file linking in eine Komponente packen. dll und exe Dateien werden als keyfiles in extra Komponenten eingebunden.
Beim dynamic file linking können sich die Dateiname und auch die Anzahl der Dateien im verknüpften Ordner ändern.
Die Einstellungen der Komponenten können auch nachträglich im View Setup-Design angepasst werden. Also dynamische Verknüpfung der Komponenten oder nicht.

Edited by ali, 18 February 2010 - 12:42.


GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 18 February 2010 - 13:15

OK. Das mit dem CopyFile gefällt mir. Muss ich mir genauer anschauen.

GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 18 February 2010 - 15:12

Hallo

Ich habe es jetzt mit "XCopyFile(svSourcePath ^ "CopyFiles/*", svDestinationPath, INCLUDE_SUBDIR)" gemacht. Das Zielverzeichnis wird mir erstellt aber es wird nichts kopiert. In der Source habe ich einiges an inhalt drin.

GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 18 February 2010 - 16:30

Ist hier ein elementarer Fehler drin?

Es tut. Aber ich kenn mich nicht mit Seiteneffekten aus.
CODE
   if (XCopyFile(svSourcePath ^ "CopyFiles/*.*", svDestinationPath ^ "*.*", COMP_NORMAL | INCLUDE_SUBDIR | CLEAR_FILE_ATTR) < 0) then
    MessageBox ("XCopyFile failed | Source: " ^ svSourcePath ^ "CopyFiles/* | Target: " ^ svDestinationPath, SEVERE);    
   endif;  



tleonhard

tleonhard
  • Full Members
  • 59 posts

Posted 18 February 2010 - 17:20

Hi,

Waru machst du "svSourcePath ^ "CopyFiles/*.*" " ich weiß nicht ob das funktioniert. Ich würde es so machen:

CODE

svSourcePath2 =svSourcePath ^ "CopyFiles";    
XCopyFile (svSourcePath2 ^ "*.*" , svDestinationPath ^ "*.*"COMP_NORMAL | INCLUDE_SUBDIR | CLEAR_FILE_ATTR);




GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 19 February 2010 - 08:18

Na ja. Ich komme aus der C# Ecke und gehe davon aus das ich überall und zu jederzeit Variablen zusammenbauen kann.

Aber kopieren tut es. Das Problem ist eigentlich gelöst, b.z.w. war gar nie ein Problem.

Das eigentliche Problem ist das hier: Error 1308 source file not found

Das muss ich noch lösen. Das kopieren tut. sad.gif

Spitfyr

Spitfyr
  • Full Members
  • 162 posts

Posted 19 February 2010 - 08:48

Wenn schon dann so:

if (XCopyFile(svSourcePath ^ "CopyFiles\\*.*", svDestinationPath ^ "*.*", COMP_NORMAL | INCLUDE_SUBDIR | CLEAR_FILE_ATTR) < 0)

Um ein \ innerhalb von Strings/Variablen darzustellen braucht man \\

Edited by Spitfyr, 19 February 2010 - 09:36.


GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 19 February 2010 - 09:17

QUOTE (Spitfyr @ 2010-02-19 08:48)
Um ein \ innerhalb von  darzustellen braucht man \\

Ups. Danke für den Hinweis. Werde ich noch rein tun.

GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 19 February 2010 - 09:30

QUOTE (Spitfyr @ 2010-02-19 08:48)
Um ein \ innerhalb von  darzustellen braucht man \\

Ups. Danke für den Hinweis. Werde ich noch rein tun.

Spitfyr

Spitfyr
  • Full Members
  • 162 posts

Posted 19 February 2010 - 11:03

Noch ein Hinweis zu
QUOTE
Kann InstallShield 2008 Dateien 1 zu 1 kopieren ohne das ich im Setup genau definieren muss welche es sind?

Man kann Dateien auch ohne Script kopieren (Script ist oft anfällig bzgl. der Virenscanner).

Als Alternative kann man die Table "MoveFile" (gehe mal in den DirectEditor) verwenden. Das hat den Vorteil, dass der WindowsInstaller auch das ganze Rollback Handling (im Falle eines Abbruches) übernimmt. Bei CopyFile per Script sind die Dateien dann da, auch wenn danach ein Abbruch erfolgt.

Man kann da auch mit *.* arbeiten (aber keine Unterordner mit kopieren).

Man muss nur eine Komponente mit dem Eintrag verbinden. Wenn diese Komponente installiert (oder deinstalliert) wird, werden die Dateien kopiert.



GENiALi

GENiALi
  • Full Members
  • 13 posts

Posted 19 February 2010 - 11:53

Danke. Aber es müssen auch Unterordner mit.

Ich frage mich jetzt aber schon wie so man ein spezielles Copytool machte wenn InstallShield ja alles schon kann.