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

Dateien/Ordner sichern und restoren


4 replies to this topic

Gerstl

Gerstl
  • Members
  • 22 posts

Posted 28 November 2001 - 18:03

Hallo,

Da ich in der Vergangenheit Installationen ausgeliefert habe, die beim deinstallieren Dateien/Ordner von anderen Anwendungen entfernen, benötige ich die Möglichkeit noch vor dem Deinstallieren diese zu sichern und nach der Installation wieder zurückzuspielen.

Wie kann ich diese Aufgabe am eingachsten lösen ?

Besten Dank

Jochen


CimTeam

CimTeam
  • Members
  • 16 posts

Posted 29 November 2001 - 08:13

Hallo,

am einfachsten laesst sich dies wahrscheinlich durch
ein kleines Script erledigen.
Dazu die Funktionen XCopyFile fuer ganze Directories
oder CopyFile fuer einzelne Files verwenden.
Die Aufrufparameter der Funktionen sind in der
InstallShield Hilfe beschrieben.


Gerstl

Gerstl
  • Members
  • 22 posts

Posted 02 December 2001 - 18:32

Hallo CimTeam,

ich habe mittlerweile versucht es über VBScripte zu machen.

Meine VBScripte laufen "standalone" einwandfrei.

Diese Scripte habe ich in CustomActions eingespeichert.

Das "Save"-Custom Action habe ich so ziemlich an den Anfang der ersten Sequenz gesetzt.

Das "Restore"-Custom Action habe ich an vorletzte Stelle der Ausführen Sequenz gesetzt.

Kommt es nun zu einer Installation, werden beide CustomActions nicht ausgeführt..

Wo müßte ich Aktionen platzieren, damit es klappt ?

Besten Dank für den Tip mit InstallScript.

Die habe ich noch nie zum laufen gebracht.
Ich würde diese ja auch gerne nutzen weil die ja anscheinend debugbar sind.

Aber ich habe den Trick noch nicht heraus gefunden, wie  ich den Programmzeiger, sollte er sich mal in ein solches Script verirren, dort anhalten und steppen kann.

(Ist wahrscheinlich ähnlich fies wie der MSI-Debugger, wo man sich vor dem Start im MSI-Debugger Ast befinden muß)

Aber trotzdem besten Dank soweit

Jochen Gerstl


Beam

Beam
  • Members
  • 9 posts

Posted 03 December 2001 - 23:18

@Jürgen ...

Kannst Du einem Newbee zu so einem script mal ein Beispiel senden ? beam@beamware.de

Merci


CimTeam

CimTeam
  • Members
  • 16 posts

Posted 10 December 2001 - 13:59

Also Eins nach dem Anderen:

Die Position der Skripte ist auch aus irgendwelchen Informationen aus der Newsgruppe(news.installshield.com)
entstanden.
SaveXXX steht nach MigrateFeatureStates und RestoreXXX kommt ganz am Schluss nach PublishProduct.

Die Skripte werden ueber den Assistenten als CA gebunden. Wichtig sind glaube ich die Haeckchen bei IMMER AUSFUEHREN und FEHLER IGNORIEREN. Diese CA werden dann wie oben angegeben in die Sequenz  eingefuegt.

Das mit dem Debuggen der CA's klappt nicht immer so wie gewuenscht. Mit der Version 2.02 habe ich mehr Probleme mit dem Debuggen als bei einer vorherigen Version.

Dafuer kann ich bei meinem Projekt den MSI Debugger ueberhaupt nicht aufstarten ;-(
Auch wenn ich im Zweig MSI Debugger stehe passiert einfach nichts. Und noch schlimmer ist der Developer, da geht ueberhaupt nichts mit unserem Projekt Brrrrrr....

Ein Beispiel koennte so aussehen:
(//* ==> zusaetzliche Kommentare fuer das Vestaendnis)

//////////////////////////////////////////////////////////////////////////////
//                                                                          
// Funktion:  SaveDataSE1
//                                                                          
//  Zweck:  Diese Funktion kopiert eine Datenbank aus der SecondEdition V1
//zurueck in die SecondEdition V2
//                                                                          
///////////////////////////////////////////////////////////////////////////////
function SaveDataSE1(hInstall)  
   
   STRING szTitle,
   szFormat,
   szKey,
   svCDB[257],
svCAPTBL[257];
   
   INTnvSyslang;
   NUMBER nBuffer,
nvType,
nvSize;
begin

nBuffer=257;
svCDB[0] = 0;
svCAPTBL[0] = 0;

//* Ab hier suche ich den Pfad unseres Programmes in der
//* Registry

   RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);// Ab jetzt wird dieser REG-Baum verwendet.
szKey = "SOFTWARE\\CIM-Team\\E3.series\\2.0";// Schluessel, unter dem gearbeitet wird.
nvType = REGDB_STRING;// Stringeintrag
nvSize = -1;// Groesse, bei -1 automatisch berechnet.

                        // Und der Registryeintrag wird gesetzt
RegDBGetKeyValueEx( szKey, "CDB", nvType , svCDB , nvSize );    
   
   //szTitle = "Save CDB Data SE V1";//xx
   //szFormat = "Sichert CDB Daten der SE V1 von %s nach %s ";   //xx

//* Ist der Pfad gefunden, kann kopiert werden...
   
   if( svCDB[0] ) then
   //SprintfBox( INFORMATION, szTitle, szFormat, svCDB ^ "\\*.*", TARGETDIR ^ "save\\cdb\\" );  
XCopyFile( svCDB ^ "\\*.*", TARGETDIR ^ "save\\cdb\\", COMP_NORMAL | INCLUDE_SUBDIR );
endif;      


RegDBGetKeyValueEx( szKey, "CAPTBL", nvType , svCAPTBL , nvSize );    
   
   if( svCAPTBL[0] ) then      
       szTitle = "Save license file";//xx
       szFormat = "Save your existant license file from %s nach %s ";   //xx
   SprintfBox( INFORMATION, szTitle, szFormat, svCAPTBL ^ "\\license.dat", svCAPTBL ^ "\\save\\license.dat");  
CopyFile( svCAPTBL ^ "\\license.dat", TARGETDIR ^ "save\\license.dat" );
endif;      
   
   if( svCAPTBL[0] ) then
   //SprintfBox( INFORMATION, szTitle, szFormat, svCAPTBL ^ "\\reports\\*.*", TARGETDIR ^ "save\\reports\scripts\\" );  
XCopyFile( svCAPTBL ^ "\\reports\\*.*", TARGETDIR ^ "save\\reports\\", COMP_NORMAL | INCLUDE_SUBDIR );
endif;      

   if( svCAPTBL[0] ) then
XCopyFile( svCAPTBL ^ "\\scripts\\*.*", TARGETDIR ^ "save\\scripts\\", COMP_NORMAL | INCLUDE_SUBDIR );
endif;      

end;

Mit dem Script werden vier verschiedene anwenderspezifische Datenbaeume gesichert( Datenbank cdb, Lizenzdatei, Skripte und Reports).