Frage Inno Setup - Deinstallieren der Registry-Option


Das Programm Ich erstelle ein Installationsprogramm für die Verwendung von Registrierungseinträgen zum Speichern von Benutzereinstellungen. Im Moment habe ich es eingerichtet, um diese Registrierungsdateien zu löschen, wenn das Programm deinstalliert wird, aber ich möchte die Möglichkeit haben, Benutzern eine Option zu geben, um die Registrierungsdateien bei der Deinstallation zu behalten oder zu löschen.

Ich bin nicht der beste Scripter / Programmierer, also je einfacher die Antwort, desto besser.

Meine Registrierung / Deinstallation sieht derzeit so aus.

    [Registry]
    Root: HKCU; Subkey: "Software\FFSPLIT Overlay Filter"; Flags: uninsdeletekey


    [UninstallDelete]  
    Type: filesandordirs; Name: "{app}\ffmpeg"
    Type: filesandordirs; Name: "{app}\OverlayData"
    Type: files; Name: "{app}\AForge.Controls.dll"
    Type: files; Name: "{app}\AForge.Imaging.dll"
    Type: files; Name: "{app}\AForge.Video.DirectShow.dll"
    Type: files; Name: "{app}\AForge.Video.dll"
    Type: files; Name: "{app}\AudioFilter.ax"
    Type: files; Name: "{app}\default.cfg"
    Type: files; Name: "{app}\DirectShowLib-2005.dll"
    Type: files; Name: "{app}\ffmpeg.exe"
    Type: files; Name: "{app}\FFSplit Overlay Filter.ax"
    Type: files; Name: "{app}\FFsplit.exe"
    Type: files; Name: "{app}\FFSplitOverlayManager.exe"
    Type: files; Name: "{app}\librtmp.dll"
    Type: files; Name: "{app}\msvcp100d.dll"
    Type: files; Name: "{app}\msvcr100d.dll"
    Type: files; Name: "{app}\NAudio.dll"
    Type: files; Name: "{app}\RegisterFilter.bat"
    Type: files; Name: "{app}\setting.cfg"
    Type: files; Name: "{app}\UNRegisterFilter.bat"
    Type: files; Name: "{app}\wavbuffer"
    Type: files; Name: "{app}\Micfilter.ax"

8
2017-09-28 17:48


Ursprung


Antworten:


InnoSetup hat keine Parameter für die bedingte Deinstallation, Sie müssen dies also selbst tun. Du musst also das entfernen uninsdeletekey Flag, das den Registrierungsschlüssel automatisch löschen würde und am Ende des Deinstallationsvorgangs können Sie den Benutzer fragen, ob er diesen Schlüssel (in einer sinnvollen Nachrichtenweise) löschen und den Schlüssel manuell löschen möchte. Das folgende Skript führt dies bei der Deinstallation nach dem Deinstallationsschritt aus, zu welchem ​​Zeitpunkt die Anwendung erfolgreich deinstalliert wurde. Sie können dem folgen commented version:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

#define FilterRegKey "Software\FFSPLIT Overlay Filter"

[Registry]
Root: HKCU; Subkey: "{#FilterRegKey}"

[Code]
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  if CurUninstallStep = usPostUninstall then
  begin
    if RegKeyExists(HKEY_CURRENT_USER, '{#FilterRegKey}') then
      if MsgBox('Do you want to delete the overlay filter registry key ?',
        mbConfirmation, MB_YESNO) = IDYES
      then
        RegDeleteKeyIncludingSubkeys(HKEY_CURRENT_USER, '{#FilterRegKey}');
  end;
end;

18
2017-09-28 18:59