Löschen von Dateien
Posted 30 December 2005 - 13:16
Posted 01 January 2006 - 17:24
Stefan Krüger
InstallSite.org twitter facebook
Posted 02 January 2006 - 09:18
Posted 08 January 2006 - 12:56
Stefan Krüger
InstallSite.org twitter facebook
Posted 09 January 2006 - 11:11
Entschuldige bitte wenn ich mich zu blöde anstelle, aber wie kann ich in der RemoveFile Tabelle einen Eintrag "dynamisch" erstellen?
Guest_Tino Teuber
Posted 09 January 2006 - 11:45
QUOTE |
aber wie kann ich in der RemoveFile Tabelle einen Eintrag "dynamisch" erstellen? |
Das Feld FileName der Tabelle RemoveFile ist vom Type WildCardFilename . Das bedeutet, dass Du hier mit Hilfe von "*" und "?" mehrere Dateinen zusammenfassen kannst.
Gruß
Tino
Edited by Tino Teuber, 09 January 2006 - 11:46.
Posted 09 January 2006 - 12:00
ich brauche aber keine Wildcards, da ich die Namen der Files weiss, was ich brauche, ist ein Auswahlkriterium, ob diese Files gelöscht werden sollen oder nicht.
Posted 09 January 2006 - 16:08
Ich mache auch so etwas:
Der Benutzer wird gefragt, ob die Einstellungen überschrieben werden können.
Dabei wird PROPERTY_X gesetzt (ja = 1, nein = 0").
Dann gibt es eine CustomAction A_Delete_Settings in der Ausführungssequenz, nach InstallInitialize, Bedingung: NOT Installed.
Diese CA ruft eine Funktion F_Delete_Settings auf.
In der Funktion schreibe ich mit IS-Script etwa ungefähr so:
0.
Wenn PROPERTY_X=1 ist, dann:
1.
sSQL = "DELETE FROM `RemoveFile` WHERE `FileKey`='FileKeyX'";
+ Script zum Ausführen der SQL-Anweisung
2.
sSQLBase = "INSERT INTO `RemoveFile` (%s) VALUES (%s) TEMPORARY";
sColumnBase = "`RemoveFile`.`FileKey`, `RemoveFile`.`Component_`,
`RemoveFile`.`FileName`,";
sColumnBase = sColumnBase + " `RemoveFile`.`DirProperty`,
`RemoveFile`.`InstallMode`";
sValue = "'FileKeyX', 'ComponentX', 'SettingX.set', 'MY_FOLDER_X', 1";
Sprintf (sSQL, sSQLBase, sColumnBase, sValue);
+ Script zum Ausführen der SQL-Anweisung
Damit liegen die Einträge in der Tabelle RemoveFile vor und wenn die ComponentX
installiert wird, wird eine vorhandene SettingX.set gelöscht
Vielleicht mache ichs zu umständlich, aber funktioniert.
MfG
André
Guest_Tino Teuber
Posted 09 January 2006 - 18:34
QUOTE |
ich brauche aber keine Wildcards, da ich die Namen der Files weiss, |
Du hast gefragt, wie man "dynamisch" einen Eintrag in die Tabelle RemoveFile einfügt. Da ich nicht weiß was du genau mit "dynamisch" meinst konnte ich nur raten und habe Dir den Hinweis mit den Wildcards gegeben.
QUOTE |
was ich brauche, ist ein Auswahlkriterium, ob diese Files gelöscht werden sollen oder nicht. |
Die Datensätze in der Tabelle RemoveFile sind durch die Spalte Component_ an eine Komponente gebunden. Die Komponenten Tabelle hat wiederum die Spalte Condition mit deren Hilfe du festlegen kannst ob die Dateien gelöscht werden sollen oder nicht.
Gruß
Tino
Posted 10 January 2006 - 11:59
Danke für Deinen Hinweis. Mitlerweile glaube ich auch, das es nur über ein InstallScript oder aufrufen einer DLL geht. Hatte gehofft, dass es mal anders geht.
Nochmals Danke, werde mich ans schreiben eines InstallScriptes machen.
Hier noch eine Frage: Wenn ich das Script benutze, muss ich irgendwas zusätzlich mit ausliefern, damit das Setup läuft? Was wird zur Ausführung des Setups auf dem Zielsystem benötigt?
Danke
Posted 10 January 2006 - 12:07
ich wollte nicht unhöflch sein oder so rüberkommen. Danke für Deine Hilfe.
Aber was ich brauche ist :
Es sollte während der Deinstallation vom Anwender entschieden werden (ein J/N Dialog in der Sequence --> Wert wird in eine Globale Property geschrieben), ob bestimmte Dateien (Profildaten) gelöscht werden sollen oder auf dem System verbleiben sollen. Dies kann ich nicht über Wildcards oder über die Komponenten Tabelle (oder doch??) machen, da ich nicht weiss was der Anwender machen will.
Danke
Posted 11 January 2006 - 09:51
Wenn ich ein Script einfüge, wird automatisch die ScriptEngine eingefügt, die dann auch installiert wird.
Die Setup.rul ist von InstallShield vorbereitet.
Hier füge ich die Funktion ein:
export prototype F_Settings_Delete(HWND);
function F_Settings_Delete(hInstall)
begin
// Code ...
end;
Dann gibt es eine CA A_Settings_Delete, diese benutzt die Funktion F_Settings_Delete.
MfG
ANo
Posted 11 January 2006 - 10:05
Ich benutze IS11 Basic MSI-Projekt. Hatte gehofft ohne Script auszukommen, geht aber wohl nicht. Durch die 10 Zeilen Script Code muss die IS Engine mit installiert werden. Diese ist 1 MB gross. So wird mein Setup auf einen Schlag fast doppelt so gross wie vorher. Naja so ist das Leben.
Vielen Dank nochmal für Deine Hilfe.
gruss aus B.
Jürgen
(Ich weiss das die Engine auch aus dem Netz geladen werden kann, aber nicht jeder Anwender ist während der Installation am Netz.)
Guest_Tino Teuber
Posted 12 January 2006 - 13:53
keine Angst, du kammst nich unhöflich rüber. ;-)
Ich habe Dein Problem gestern Abend versucht lokal bei mir zu testen. Ich habe eine simple MSI Datei erstellt die eine Textdatei installiert UND bei der Deinstallation zusätzlich das Verzeichnis "profil" im Programmverzeichnis mit samt den Dateien (welche NACH der Installation von mir MANUELL erstellt wurden) löscht. Das ganze hat bei mir ohne Probleme funktioniert. Wie das funktionert habe ich ja bereits oben geschrieben.
Das Löschen des "profil" Verzeichnis und der Dateien müsstest Du am besten mit einer extra neuen Komponente verbinden damit du dann dort das Condition Feld benutzen kannst. In diesem Condition Feld prüfst du dann das Property (Dialog: Profilordner löschen: Ja/Nein?) ab.
Gruß
Tino
Edited by Tino Teuber, 07 February 2006 - 15:04.