; ####################################################################################### ; # This Inno Setup script was generated by Visual & Installer - Visual Studio Addin # ; # Visual & Installer (c) 2013 - 2014 unSigned Softworks. All Rights Reserved. # ; # Visit http://www.visual-installer.com/ for more details. # ; ####################################################################################### ; This script was created from .vdproj file. Not all features from .vdproj file may have been transfered. ; See the Inno Setup documentation at http://www.jrsoftware.org/ for details on creating script files! ;-------------------------------- ; Product details #define PRODUCT_NAME "Aso_Fuel" ;Répertoire installation #define PRODUCT_CODE "{{0AFFBDE8-FD9A-4572-A5F1-30789B83F5DA}" #define PRODUCT_VERSION "1.9.1.1" #define MANUFACTURER "AAX" #define TITLE "Aso Fuel" #define MyAppExeName "Fuel_ASO.exe" [Setup] AppName={#PRODUCT_NAME} AppVersion={#PRODUCT_VERSION} AppId={#PRODUCT_CODE} DefaultDirName={pf}\{#MANUFACTURER}\{#PRODUCT_NAME} DefaultGroupName={#PRODUCT_NAME} AppCopyright=Copyright (c) 2015-2020 {#MANUFACTURER} AppPublisher={#MANUFACTURER} OutputDir=Release OutputBaseFilename=Fuel_ASO_Install [languages] Name: "fr" ; MessagesFile: "compiler:Languages\French.isl" [Files] ;Source: "D:\Patrick\Mes Téléchargements\dotNetFx45_Full_setup.exe"; DestDir: {app}; Check: NOT verifDotNet Source: "..\Fuel01\Resources\pompe01.ico"; DestDir: "{app}\"; DestName: "pompe01.ico"; Flags: "ignoreversion" Source: "..\Fuel01\bin\Debug\Fuel_ASO.exe" ; DestDir: "{app}\"; DestName: {#MyAppExeName} ; Source: "..\Fuel01\bin\Debug\Fuel_ASO.exe.config" ; DestDir: "{app}\"; DestName: {#MyAppExeName}.config ; Source: "..\Fuel01\bin\Debug\Microsoft.AspNet.SignalR.Client.dll"; DestDir: "{app}\"; DestName: "Microsoft.AspNet.SignalR.Client.dll"; Source: "..\Fuel01\bin\Debug\Newtonsoft.Json.dll"; DestDir: "{app}\"; DestName: "Newtonsoft.Json.dll"; Source: "..\Fuel01\bin\Debug\Ionic.Utils.Zip.dll"; DestDir: "{app}\"; DestName: "Ionic.Utils.Zip.dll"; [Registry] Root: "HKLM"; Subkey: "Software\{#MANUFACTURER}\{#PRODUCT_NAME}"; ValueType: string; ValueName: "softinstalled"; ValueData: "YES"; Flags: createvalueifdoesntexist uninsdeletekey ; Permissions: everyone-full; Languages: fr [Copy] [Icons] Name: "{userdesktop}\Aso Fuel"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}\"; IconFilename: "{app}\pompe01.ico"; IconIndex: "0"; Flags: createonlyiffileexists Name: "{userprograms}\ASO\Fuel\Aso_Fuel"; Filename: "{app}\{#MyAppExeName}"; WorkingDir: "{app}\";IconFilename: "{app}\pompe01.ico"; IconIndex: "0"; Flags: createonlyiffileexists Name: "{userprograms}\ASO\Fuel\{cm:UninstallProgram,Fuel ASO}"; Filename: "{uninstallexe}" [Run] ;Filename: "{app}\dotNetFx45_Full_setup.exe"; WorkingDir: {app}; StatusMsg: Installation en cours de .NET Framework 4.5, cette opération peut prendre quelques minutes...; Check: NOT verifDotNet Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppExeName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [Dirs] Name: "{commonappdata}\AsoFuel"; Languages: fr; Permissions: everyone-modify [Code] function IsDotNetDetected(version: string; service: cardinal): boolean; // Indicates whether the specified version and service pack of the .NET Framework is installed. // // version -- Specify one of these strings for the required .NET Framework version: // 'v1.1.4322' .NET Framework 1.1 // 'v2.0.50727' .NET Framework 2.0 // 'v3.0' .NET Framework 3.0 // 'v3.5' .NET Framework 3.5 // 'v4\Client' .NET Framework 4.0 Client Profile // 'v4\Full' .NET Framework 4.0 Full Installation // 'v4.5' .NET Framework 4.5 // // service -- Specify any non-negative integer for the required service pack level: // 0 No service packs required // 1, 2, etc. Service pack 1, 2, etc. required var key: string; install, release, serviceCount: cardinal; check45, success: boolean; begin // .NET 4.5 installs as update to .NET 4.0 Full if version = 'v4.5' then begin version := 'v4\Full'; check45 := true; end else check45 := false; // installation key group for all .NET versions key := 'SOFTWARE\Microsoft\NET Framework Setup\NDP\' + version; // .NET 3.0 uses value InstallSuccess in subkey Setup if Pos('v3.0', version) = 1 then begin success := RegQueryDWordValue(HKLM, key + '\Setup', 'InstallSuccess', install); end else begin success := RegQueryDWordValue(HKLM, key, 'Install', install); end; // .NET 4.0/4.5 uses value Servicing instead of SP if Pos('v4', version) = 1 then begin success := success and RegQueryDWordValue(HKLM, key, 'Servicing', serviceCount); end else begin success := success and RegQueryDWordValue(HKLM, key, 'SP', serviceCount); end; // .NET 4.5 uses additional value Release if check45 then begin success := success and RegQueryDWordValue(HKLM, key, 'Release', release); success := success and (release >= 378389); end; result := success and (install = 1) and (serviceCount >= service); end; function verifDotNet(): Boolean; begin result := IsDotNetDetected('v4.5', 0); end; function GetNumber(var temp: String): Integer; var part: String; pos1: Integer; begin if Length(temp) = 0 then begin Result := -1; Exit; end; pos1 := Pos('.', temp); if (pos1 = 0) then begin Result := StrToInt(temp); temp := ''; end else begin part := Copy(temp, 1, pos1 - 1); temp := Copy(temp, pos1 + 1, Length(temp)); Result := StrToInt(part); end; end; function CompareInner(var temp1, temp2: String): Integer; var num1, num2: Integer; begin num1 := GetNumber(temp1); num2 := GetNumber(temp2); if (num1 = -1) or (num2 = -1) then begin Result := 0; Exit; end; if (num1 > num2) then begin Result := 1; end else if (num1 < num2) then begin Result := -1; end else begin Result := CompareInner(temp1, temp2); end; end; function CompareVersion(str1, str2: String): Integer; var temp1, temp2: String; begin temp1 := str1; temp2 := str2; Result := CompareInner(temp1, temp2); end; function InitializeSetup(): Boolean; var oldVersion: String; uninstaller: String; ErrorCode: Integer; vCurID :String; vCurAppName :String; vCurVer :String; begin vCurID:= '{#SetupSetting("AppId")}'; vCurAppName:= '{#SetupSetting("AppName")}'; vCurVer := '{#SetupSetting("AppVersion")}'; //remove first "{" of ID vCurID:= Copy(vCurID, 2, Length(vCurID) - 1); // if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + vCurID + '_is1') then begin RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + vCurID + '_is1', 'DisplayVersion', oldVersion); if (CompareVersion(oldVersion, '{#SetupSetting("AppVersion")}') < 0) then begin if MsgBox('Version ' + oldVersion + ' of ' + vCurAppName + ' est déjà installée.' + #13 +#10 +'Voulez-vous installer la version '+vCurVer+' ?', mbConfirmation, MB_YESNO) = IDYES then begin RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + vCurID + '_is1', 'UninstallString', uninstaller); ShellExec('runas', uninstaller, '/SILENT', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode); Result := True; end else begin Result := False; end; end else begin if MsgBox('La version ' + oldVersion + ' of ' + vCurAppName + ' est déjà instalée.'+ #13+ #10+ 'Voulez-vous la désintaller et installer la version '+vCurVer+' ?', mbConfirmation, MB_YESNO) = IDYES then begin RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\' + vCurID + '_is1', 'UninstallString', uninstaller); ShellExec('runas', uninstaller, '/SILENT', '', SW_HIDE, ewWaitUntilTerminated, ErrorCode); Result := True; end else begin Result := False; end end; end else begin Result := True; end; end;