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

Config File kopieren


9 replies to this topic

Phil_b

Phil_b
  • Full Members
  • 40 posts

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

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

Attached Images

  • screenshot.JPG


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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 Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 12 November 2008 - 12:33

Oh, und ich bin icht sicher, ob Execute Once auch nach der ExecuteAction noch wie beabsichtigt funktioniert.

Phil_b

Phil_b
  • Full Members
  • 40 posts

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).

Attached Images

  • test.JPG


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 13 November 2008 - 11:45

Zum Bespiel in der InstallExecute Sequenz nach InstallFinalize.

Phil_b

Phil_b
  • Full Members
  • 40 posts

Posted 13 November 2008 - 13:21

Geht leider auch nach "InstallFinalize" nicht sad.gif

Ich habe die Sequence bei "Install UI Sequence" rausgenommen und nur bei "Install Excec Sequence" aufgeführt (siehe dazu Printscreen).

Welche Sequence könnte die richtige sein ?

Attached Images

  • test.JPG


ali

ali
  • Full Members
  • 1,008 posts

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

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

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.

Phil_b

Phil_b
  • Full Members
  • 40 posts

Posted 19 November 2008 - 11:13

Es hat nun funktioniert, die Pfäde waren richtig es lag am Readonly Flag des CONFIG Files.