1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| [Registry]
; Création d'une clé à l'installation qui sera supprimée à la désinstallation.
Root: HKLM; Subkey: SOFTWARE\TOTO; ValueType: string; ValueName: CurrentVersion; ValueData: 1.0; Flags: uninsdeletekey
Root: HKLM; Subkey: SOFTWARE\TOTO; ValueType: string; ValueName: UninstallFile; ValueData: {uninstallexe}; Flags: uninsdeletekey
[Code]
var
MessageErreur : string;
Version: String;
FichierUninstall: String;
Registre: String;
ErrorCode: Integer;
function InitializeSetup(): Boolean;
// Vérification de la présence de l'application à l'installation
begin
Registre := 'SOFTWARE\TOTO';
if RegQueryStringValue( HKLM, Registre, 'UninstallFile', FichierUninstall) then
begin
// Récupération de la version installée
RegQueryStringValue( HKLM, Registre, 'CurrentVersion', Version);
MessageErreur := 'Pour continuer l''installation, vous devez désinstaller TOTO'+Version+'.'
+ #13#10 + 'Souhaitez vous le faire automatiquement ? ';
// On lance le désinstallation et attendons
if RegQueryStringValue( HKLM, Registre, 'UninstallFile', FichierUninstall) then
begin
case Msgbox(MessageErreur, mbConfirmation, MB_YESNOCANCEL or MB_DEFBUTTON2) of
// Ok pour desinstallation
IDYES:
begin
// Lancement de la désinstallation
ShellExec('', FichierUninstall, ' /SILENT', '', SW_SHOW, ewWaitUntilTerminated, ErrorCode);
// Verification que la désinstallation a bien eu lieu en vérifiant la variable FichierUninstall
FichierUninstall := '';
RegQueryStringValue( HKLM, Registre, 'UninstallFile', FichierUninstall);
end
// Refus de désinstallation => Arrêt installation
else
begin
Msgbox('L''installation est annulée car vous avez choisi de ne pas désinstaller l''ancienne version', mbConfirmation, MB_Ok);
Result := False;
Exit;
end
end
// L'installation peut continuer
Result := True;
end
end
else
Result := True;
end; |
Partager