diff --git a/gajim.iss b/gajim.iss index 538e297ee..6a20d01c9 100644 --- a/gajim.iss +++ b/gajim.iss @@ -13,6 +13,7 @@ Name: "main"; Description: "Main Files"; Types: full compact custom; Flags: fixe [Tasks] Name: desktopicon; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Components: main +Name: removeprevious; Description: "Remouve previously installed version"; GroupDescription: "Previous install:"; Components: main; Check: IsAlreadyInstalled('Gajim'); [Files] Source: "dist\*.pyd"; DestDir: "{app}\src" @@ -31,3 +32,51 @@ Name: "{userdesktop}\Gajim"; Filename: "{app}\src\gajim.exe"; WorkingDir: "{app} [Run] Filename: "{app}\src\gajim.exe"; Description: "Launch application"; Flags: postinstall nowait skipifsilent + +[Code] + +function GetUninstallPath( AppID: String ): String; +var + sPrevPath: String; +begin + sPrevPath := ''; + if not RegQueryStringValue( HKLM, + 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1', + 'UninstallString', sPrevpath) then + RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' , + 'UninstallString', sPrevpath); + + Result := sPrevPath; +end; + +function IsAlreadyInstalled( AppID: String ): Boolean; +var + sPrevPath: String; +begin + sPrevPath := GetUninstallPath( AppID ); + + + if ( Length(sPrevPath) > 0 ) then + Result:=true + else + Result:=false; + end; + +procedure CurStepChanged(CurStep: TSetupStep); +var + sUninstPath: String; + sPrevID: String; + ResultCode: Integer; +begin + if CurStep = ssInstall then + begin + sPrevID := 'Gajim'; + sUninstPath := GetUninstallPath( sprevID ); + + if ( Length(sUninstPath) > 0 ) then + begin + sUninstPath := RemoveQuotes(sUninstPath); + Exec( RemoveQuotes(sUninstPath), '/silent', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); + end; + end; +end;