![]() |
Inno Setup - {userappdata} aller User des Systems ermitteln
Ich schreibe in meinem Setup eine default-ini in den {commonappdata}. Mein Programm schreibt nun die Daten jedes Users in dessen eigenes appdata Verzeichnis...
Wenn nun deinstalliert wird, sollen natürlich die {userappdata} Ordner aller User des Systems bereinigt werden und nicht nur der Ordner des gerade angemeldeten Users :gruebel: |
Re: Inno Setup - {userappdata} aller User des Systems ermitt
Geht nicht. Oder sagen wir: Es ist nicht einfach. Schreib der Einfachheit halber ein Cleaningtool, das nur die Einstellungen des angemeldeten Users entfernt, und das man kostenlos bekommen kann (Homepage, CD deines Programms, Bonus im Download, usw.)
|
Re: Inno Setup - {userappdata} aller User des Systems ermitt
Zitat:
Man kann doch in Innosetup nach der Deinstallation noch pascal-Code ausführen... Wenn ich nun eine Liste aller Benutzernamen am System hätte, könnte ich aus dem {userappdata}-string einfach "\[Username]\" gegen "\[anderer Username]\" ersetzen und dort die entspr. Ordner/Dateien suchen und ggf. löschen. Die Frage ist nun, wo bekomme ich eine Liste mir allen Usernamen? |
Re: Inno Setup - {userappdata} aller User des Systems ermitt
Dann brauchst du auf jeden Fall ein externes Programm, denn die Skriptsprache von Inno Setup unterstützt das überhaupt nicht. Wie gesagt, es wird auf ein Cleaningtool hinauslaufen. Ich habe mal so was für Luckies LuckieDIPS gemacht. Das Teil hat den Profilordner des aktuell gemeldeten Benutzers ermittelt und ist dann nur eine Ebene höher gesprungen. Von da hat es sich rekursiv durch die Verzeichnisse gewühlt und Luckies INI-Datei (gehörte zu seinem LuckieDIPS) gelöscht.
Alternative, wie du schon sagtest: alle ![]() Wichtig wäre, dass sich dein Deinstaller dann auch nur mit Admin-Rechten ausführen lässt, weil das Cleaningtool sonst versagen dürfte. :stupid: |
Re: Inno Setup - {userappdata} aller User des Systems ermitt
Ich hab mir jetzt was gebastelt um an alle bettr. Ordner heran zu kommen...
Delphi-Quellcode:
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
var UserFolders, Appdata, Users, Folder:string; FindRec: TFindRec; begin if CurUninstallStep=usPostUninstall then begin UserFolders := ExpandConstant('{commonappdata}'); if Copy(UserFolders, Length(UserFolders),1) = '\' then UserFolders := Copy(UserFolders, 1, Length(UserFolders) - 1); While Copy(UserFolders, Length(UserFolders), 1) <> '\' do UserFolders := Copy(UserFolders, 1, Length(UserFolders) - 1); AppData := Copy(ExpandConstant('{commonappdata}'), Length(UserFolders), Length(ExpandConstant('{commonappdata}'))); UserFolders := Copy(UserFolders, 1, Length(UserFolders) - 1); While Copy(UserFolders, Length(UserFolders), 1) <> '\' do UserFolders := Copy(UserFolders, 1, Length(UserFolders) - 1); if FindFirst(ExpandConstant(UserFolders + '\*'), FindRec) then begin try repeat if Copy(FindRec.Name, 1, 1) <> '.' then begin Folder := UserFolders + FindRec.Name + Appdata; if DirExists(Folder) = True then begin //Do something... msgbox(Folder, mbInformation, mb_Ok); end; end; until not FindNext(FindRec); finally FindClose(FindRec); end; end; end; end; |
Re: Inno Setup - {userappdata} aller User des Systems ermitt
Jetzt hab ich nur noch ein Problem...
Kann ich innerhalb der CurUninstallStepChanged procedure irgendwie auslösen, dass InnoSetup die Meldung "Deinstallation unvollständig" anzeigt? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz