境解決方法).png)
文章插圖
根據(jù)網(wǎng)上前人判斷.net版本改加入windows版本判斷而來 。已測試通過!
; 腳本由 Inno Setup 腳本向?qū)?生成!; 有關(guān)創(chuàng)建 Inno Setup 腳本文件的詳細(xì)資料請查閱幫助文檔!
[Code] //.net framework安裝檢查 —— 判斷指定的.NET Framework版本及service pack是否已經(jīng)安裝// 函數(shù)參數(shù)說明:// 參數(shù)1:version — 指定待判斷的.NET Framework版本:// ‘v1.1’ .NET Framework 1.1// ‘v2.0’ .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// ‘v4.5.1’ .NET Framework 4.5.1// ‘v4.5.2’ .NET Framework 4.5.2// ‘v4.6’ .NET Framework 4.6// ‘v4.6.1’ .NET Framework 4.6.1// ‘v4.6.2’ .NET Framework 4.6.2// ‘v4.7’ .NET Framework 4.7// ‘v4.7.1’ .NET Framework 4.7.1// ‘v4.7.2’ .NET Framework 4.7.2// `v4.8` .NET Framework 4.8//// 參數(shù)2:service — 指定待判斷的service pack版本:// 0 No service packs required// 1, 2, etc. Service pack 1, 2, etc. requiredfunction IsDotNetDetected(version: string; service: cardinal): boolean;var key, versionKey: string; install, release, serviceCount, versionRelease: cardinal; success: boolean;begin versionKey := version; versionRelease := 0; // .NET 1.1 and 2.0 embed release number in version key if version = ‘v1.1’ then begin versionKey := ‘v1.1.4322’; end else if version = ‘v2.0’ then begin versionKey := ‘v2.0.50727’; end // .NET 4.5 and newer install as update to .NET 4.0 Full else if Pos(‘v4.’, version) = 1 then begin versionKey := ‘v4\Full’; case version of ‘v4.5’: versionRelease := 378389; ‘v4.5.1’: versionRelease := 378675; // 378758 on Windows 8 and older ‘v4.5.2’: versionRelease := 379893; ‘v4.6’: versionRelease := 393295; // 393297 on Windows 8.1 and older ‘v4.6.1’: versionRelease := 394254; // 394271 before Win10 November Update ‘v4.6.2’: versionRelease := 394802; // 394806 before Win10 Anniversary Update ‘v4.7’: versionRelease := 460798; // 460805 before Win10 Creators Update ‘v4.7.1’: versionRelease := 461308; // 461310 before Win10 Fall Creators Update ‘v4.7.2’: versionRelease := 461808; // 461814 before Win10 April 2018 Update ‘v4.8’: versionRelease := 528040; end; end; // installation key group for all .NET versions key := ‘SOFTWARE\Microsoft\NET Framework Setup\NDP\’ + versionKey; // .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 and newer use 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 and newer use additional value Release if versionRelease > 0 then begin success := success and RegQueryDWordValue(HKLM, key, ‘Release’, release); success := success and (release >= versionRelease); end; result := success and (install = 1) and (serviceCount >= service);end;//判斷windows版本function MyGetWindowsVersion: String; // 獲取 Windows 版本varVersion: TWindowsVersion;beginGetWindowsVersionEx(Version);// Windows7if (Version.Major = 6) and (Version.Minor = 0) thenbeginResult := ‘VISTA’;Exit;end;// Windows7if (Version.Major = 6) and (Version.Minor = 1) thenbeginResult := ‘WIN7’;Exit;end;// Windows XP if (Version.Major = 5) and (Version.Minor >=1) thenbeginResult := ‘WINXP’;Exit;end;// Windows 8 if (Version.Major = 6) and (Version.Minor >1) thenbeginResult := ‘WIN8’;Exit;end;// Windows 10if (Version.Major = 10) thenbeginResult := ‘WIN10′;Exit;end; end; // 根據(jù)不同windows版本,判斷所需的.netframework版本 function InitializeSetup: Boolean; var Path:string; ResultCode: Integer; Version: TWindowsVersion; begin GetWindowsVersionEx(Version); if (MyGetWindowsVersion=’XP’ ) then //或者 (Version.Major = 5) begin if IsDotNetDetected(‘v4’, 0) then begin Result := true; End Else begin if MsgBox(‘系統(tǒng)檢測到您沒有安裝.Net Framework 4 版本,是否立刻下載并安裝?’, mbConfirmation, MB_YESNO) = idYes then begin Path := ExpandConstant(‘{pf}/Internet Explorer/iexplore.exe’); Exec(Path, ‘http://download.microsoft.com/download/1/B/E/1BE39E79-7E39-46A3-96FF-047F95396215/dotNetFx40_Full_setup.exe’, ”, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); MsgBox(‘請安裝好.Net Framework環(huán)境后(4.0client-4.0Full),再運行本安裝包程序!’,mbInformation,MB_OK); Result := false; Exit; End Else begin MsgBox(‘沒有安裝.Net Framework環(huán)境,無法運行程序,本安裝程序即將退出!’,mbInformation,MB_OK); Result := false; Exit; end; end; end else begin Result := true; End; if (MyGetWindowsVersion=’WIN7′ ) OR (MyGetWindowsVersion=’VISTA’ ) OR (MyGetWindowsVersion=’WIN8′ ) then //或者 (Version.Major = 6) begin if IsDotNetDetected(‘v4.5’, 0) or IsDotNetDetected(‘v4.5.1’, 0) or IsDotNetDetected(‘v4.5.2’, 0) or IsDotNetDetected(‘v4.6’, 0) or IsDotNetDetected(‘v4.6.1’, 0) or IsDotNetDetected(‘v4.6.2’, 0) or IsDotNetDetected(‘v4.7’, 0) or IsDotNetDetected(‘v4.7.1’, 0) or IsDotNetDetected(‘v4.7.2’, 0) then begin Result := true; End Else begin if MsgBox(‘系統(tǒng)檢測到您沒有安裝.Net Framework 4.5-4.7.2版本,是否立刻下載并安裝?’, mbConfirmation, MB_YESNO) = idYes then begin Path := ExpandConstant(‘{pf}/Internet Explorer/iexplore.exe’); //4.5.2 Exec(Path, ‘http://download.microsoft.com/download/B/4/1/B4119C11-0423-477B-80EE-7A474314B347/NDP452-KB2901954-Web.exe’, ”, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); MsgBox(‘請安裝好.Net Framework環(huán)境后(4.5-4.7.2),再運行本安裝包程序!’,mbInformation,MB_OK); Result := false; Exit; End Else begin MsgBox(‘沒有安裝.Net Framework環(huán)境,無法運行程序,本安裝程序即將退出!’,mbInformation,MB_OK); Result := false; Exit; end; end; end else begin Result := true; End; if (MyGetWindowsVersion=’10’ ) then //或者 (Version.Major = 10) begin if IsDotNetDetected(‘v4.6.1’, 0) or IsDotNetDetected(‘v4.6.2’, 0) or IsDotNetDetected(‘v4.7’, 0) or IsDotNetDetected(‘v4.7.1’, 0) or IsDotNetDetected(‘v4.7.2’, 0) then begin Result := true; End Else begin if MsgBox(‘系統(tǒng)檢測到您沒有安裝.Net Framework 4.6.1-4.8版本,是否立刻下載并安裝?’, mbConfirmation, MB_YESNO) = idYes then begin Path := ExpandConstant(‘{pf}/Internet Explorer/iexplore.exe’); //4.6.2 Exec(Path, ‘http://download.microsoft.com/download/D/5/C/D5C98AB0-35CC-45D9-9BA5-B18256BA2AE6/NDP462-KB3151802-Web.exe’, ”, SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode); MsgBox(‘請安裝好.Net Framework環(huán)境后(4.6.1-4.8),再運行本安裝包程序!’,mbInformation,MB_OK); Result := false; Exit; End Else begin MsgBox(‘沒有安裝.Net Framework環(huán)境,無法運行程序,本安裝程序即將退出!’,mbInformation,MB_OK); Result := false; Exit; end; end; end else begin Result := true; End; end;
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- 肚皮舞音樂 跳舞時不可缺少的組成部分
- jsp學(xué)生信息管理系統(tǒng)簡介 jsp系統(tǒng)怎么運行的
- java源代碼運行操作方法 java源代碼怎么運行
- cad打開圖紙缺少shx文件 cad缺少shx文件怎么辦
- iis運行php慢解決方法 iis運行php久了非常慢
- 電腦缺少nvidia驅(qū)動解決措施 電腦沒有nvidia顯卡怎么辦
- 經(jīng)濟運行的基礎(chǔ)是什么 經(jīng)濟是如何運行的
- 達(dá)利歐經(jīng)濟機器是如何運行的 經(jīng)濟機器是如何運行的
- 生活中不是缺少美,而是缺少發(fā)現(xiàn)美的眼睛! 生活中不是缺少美
- windows下運行jar程序 jar文件打不開怎么辦
