.net core 和 WPF 開發升訊威線上客服系統:把 .Net Framework 打包進安裝程式

曹旭升(sheng.c)發表於2021-11-05

本系列文章詳細介紹使用 .net core 和 WPF 開發 升訊威線上客服與營銷系統 的過程。


系列文章目錄:
https://blog.shengxunwei.com/Home/Post/44a31a32-d4e1-4ddd-8526-8a2bcd2e22be


視訊實拍:演示升訊威線上客服系統在網路中斷,直接禁用網路卡,拔掉網線的情況下,也不丟訊息,不出異常。
https://blog.shengxunwei.com/Home/Post/fe432a51-337c-4558-b9e8-347b58cbcd53


隨著系統的使用者越來越多,經常有朋友和我反饋,客服人員不會安裝 .Net Framework。

我在之前的安裝程式中,已經實現了自動檢測 .Net Framework 環境,並能夠引導使用者開啟網站進行下載,但依然有很多客服人員不會操作。需要公司的技術人員協助下載安裝。

看來只有一個辦法,就是把 .Net Framework 直接打包進安裝程式並實現檢測之後的自動安裝。本篇將詳細介紹實現辦法。

實現效果如下,第一步安裝客服系統:

隨後安裝程式將檢測,如果系統沒有安裝 .Net Framework,則自動執行 .Net Framework 安裝。

注意下圖進度條上的提示文字:Installing Microsoft .Net Framework 4.8...

重新制作安裝程式之後,使用者的技術小夥伴終於舒服了。


實現辦法:

我使用的是 Inno Setup 這款軟體來製作的安裝包,它可以通過編寫指令碼的方式,自定義安裝過程。

如何使用 Inno Setup 製作基本的安裝包,網上有很多教程,本文不再贅述,重點講一下如何實現對 .Net Framework 的環境檢測和整合其安裝程式自動安裝。

檢測 .Net Framework 環境

使用 Inno Setup 提供的 RegKeyExists 函式,對登錄檔進行查詢,通過對 SOFTWARE\Microsoft\.NETFramework 的檢測,判斷是否安裝過 .Net Framework 版本和對應的版本號。

dotNetV2RegPath:='SOFTWARE\Microsoft\.NETFramework\Policy\v4.0';

if(FileOrDirExists(tmppath)) then
begin
  Exec(tmppath, '/q', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
if RegKeyExists(HKLM, dotNetV2RegPath) then
begin
  Result := true;
end

自動執行 .Net Framework 安裝程式

這一步是本次改造的重點,相比之前僅僅給使用者一個提示,要友好很多,也解決了客服人員不會下載安裝的問題。

dotNetV2PackFile:='{src}\dotNetFx40_Full_x86_x64.exe';

Path := ExpandConstant(dotNetV2PackFile);
tmppath :=  ExpandConstant('{tmp}\dotNetFx40_Full_x86_x64.exe');
ExtractTemporaryFile('dotNetFx40_Full_x86_x64.exe');
msgbox(tmppath, mbConfirmation, MB_YESNO);
Exec(tmppath, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

只需將以上兩段程式碼,整合到 Inno Setup 新建的安裝程式模板中即可!


最後安利一下我這個程式設計師業餘肝出來的產品,線上使用和完整下載私有化部署都是免費的,希望對你有用,謝謝!

私有化版下載地址與版本說明: ?
https://docs.shengxunwei.com/Post/f7bc8496-14ee-4a53-07b4-08d8e3da6269/553293a8-dfa1-4282-bc3f-96c6c623fc9a


支援請點個贊吧~ 謝謝!

相關文章