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