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.
Config File kopieren
Started by
Phil_b
, Nov 12 2008 11:47
9 replies to this topic
Posted 12 November 2008 - 11:47
Hallo zusammen
Bei einem Installshield 2008 Project will ich ein Configfile kopieren, falls es vorhanden ist. Dazu habe ich folgendes Installscript erstellt
Bei einem Installshield 2008 Project will ich ein Configfile kopieren, falls es vorhanden ist. Dazu habe ich folgendes Installscript erstellt
CODE |
function CopyConfigFile(hMSI) STRING svResult, svSourcePath, svDestinationPath; NUMBER nvSize; begin MsiGetProperty(hMSI,"SETUPEXEDIR",svSourcePath,nvSize); if (StrLength(svSourcePath) <= 0) then MsiGetProperty(hMSI,"SOURCEDIR",svSourcePath,nvSize); endif; MsiGetProperty(hMSI,"INSTALLDIR",svDestinationPath,nvSize); if(Is(FILE_EXISTS,svSourcePath +"\\File.config")) then CopyFile(svSourcePath+"\\File.config",svDestinationPath+"\File.config"); endif; end; |
Wenn kein Config File im gleichen Directory ist wie das Setup.exe, wird es durch das Setup selbst installiert (leer). Obwohl keine Fehlermeldung erscheint, wird das Config File einfach nicht kopiert.
Das Installscript rufe ich mittels Custom Action auf (siehe dazu Printscreen). Was könnte das Problem sein ?
Danke für eure Tipps
Posted 12 November 2008 - 12:28
Bau mal ein paar Message Boxen ein um die tatsächlcihen Pfade anzuzeigen. Ich weiss nicht ob es nur beim Abtippen passiert ist, aber da sind ein paar Probleme in deiner Pfad-Syntax. Versuch's mal hiermit:
CODE |
if(Is(FILE_EXISTS,svSourcePath ^ "File.config")) then // ^ statt \\ vor dem Dateinamen CopyFile(svSourcePath ^ "File.config",svDestinationPath ^ "File.config"); // hier das gleiche, außerdem war vor File.config nur ein einfacher \ endif; |
Stefan Krüger
InstallSite.org twitter facebook
Posted 12 November 2008 - 12:32
Noch weitere Anmerkungen:
Du führst die Aktion nur in der UI Sequenz aus, d.h. nicht bei einem Silent Install.
Du führst die Aktion immer aus, also auch bei der Deinstalaltion.
Du führst die Aktion nur in der UI Sequenz aus, d.h. nicht bei einem Silent Install.
Du führst die Aktion immer aus, also auch bei der Deinstalaltion.
Stefan Krüger
InstallSite.org twitter facebook
Posted 12 November 2008 - 12:33
Oh, und ich bin icht sicher, ob Execute Once auch nach der ExecuteAction noch wie beabsichtigt funktioniert.
Stefan Krüger
InstallSite.org twitter facebook
Posted 12 November 2008 - 12:54
Hallo Stefan
Danke für deine Tipps. Ich habe nun mein Installscript überarbeitet.
Wann müsste ich den die Custom Action ausführen ? Generell müsste das leere CONFIG File zuerst durch das Setup kopiert werden und danach die Funktion "CopyConfigFile" ausgeführt werden.
Wenn nun ein Config File im gleichen Directory wie das Setup.exe vorhanden ist, wird es durch die Funktion überschrieben.
Hier ein Printscreen meiner Custom Action Einstellungen (siehe attachment).
Danke für deine Tipps. Ich habe nun mein Installscript überarbeitet.
Wann müsste ich den die Custom Action ausführen ? Generell müsste das leere CONFIG File zuerst durch das Setup kopiert werden und danach die Funktion "CopyConfigFile" ausgeführt werden.
Wenn nun ein Config File im gleichen Directory wie das Setup.exe vorhanden ist, wird es durch die Funktion überschrieben.
Hier ein Printscreen meiner Custom Action Einstellungen (siehe attachment).
Posted 13 November 2008 - 11:45
Zum Bespiel in der InstallExecute Sequenz nach InstallFinalize.
Stefan Krüger
InstallSite.org twitter facebook
Posted 13 November 2008 - 15:24
Hallo,
bau doch mal ein z.b.
SprintfMsiLog ("SETUPEXEDIR = %s",svSourcePath);
für alle Pfadabfragen bzw. Propertys ein. Props must du natürlich anpassen.
Dann generierst du ein Log beim Install, und schaust ob deine Funktion überhaupt gestartet wird, und siehst dir die Werte der Pfade an. Ich denke dann kommst du schnell dahinter.
Übrigens MsiGetProperty liefert Rückgabewerte wie ERROR_SUCCESS die du auch abfragen kannst
bau doch mal ein z.b.
SprintfMsiLog ("SETUPEXEDIR = %s",svSourcePath);
für alle Pfadabfragen bzw. Propertys ein. Props must du natürlich anpassen.
Dann generierst du ein Log beim Install, und schaust ob deine Funktion überhaupt gestartet wird, und siehst dir die Werte der Pfade an. Ich denke dann kommst du schnell dahinter.
Übrigens MsiGetProperty liefert Rückgabewerte wie ERROR_SUCCESS die du auch abfragen kannst
Posted 19 November 2008 - 10:06
QUOTE |
Geht leider auch nach "InstallFinalize" nicht |
Laut Screenshot ruft du die Funktion aber nach InstallInitialze auf, nicht nach InstallFinalize.
Stefan Krüger
InstallSite.org twitter facebook
Posted 19 November 2008 - 11:13
Es hat nun funktioniert, die Pfäde waren richtig es lag am Readonly Flag des CONFIG Files.