winform打包成安裝程序,Winform打包-NSIS 檢測.NetFramework版本(親測可用)

 2023-12-25 阅读 28 评论 0

摘要:首先介紹下,HM NIS Edit工具,是一款已非常簡潔好用的winform打包工具,功能強大,插件豐富,還有豐富的第三方界面庫支持。 winform打包成安裝程序,隨著C/S模式開發的越來越少,這方面的資料,尤其是NSIS的資料都極其稀少。翻了很多文章

首先介紹下,HM NIS Edit工具,是一款已非常簡潔好用的winform打包工具,功能強大,插件豐富,還有豐富的第三方界面庫支持。

winform打包成安裝程序,隨著C/S模式開發的越來越少,這方面的資料,尤其是NSIS的資料都極其稀少。翻了很多文章,進行整合,終于找到比較滿意的.NetFramework檢測,并安裝的實現方式。

進入正題,網上查了很多資料遇到問題:版本號對比一直無效,后來改為了用內置的版本號對比函數。

winform上傳文件到服務器。?

代碼如下:

? 頭部一定記得添加:!include "WordFunc.nsh"。看名稱就是字符串操作之類的。

1.檢測.NetFramework版本(讀取注冊表,這里與網上絕大多數資料一樣)

Function GetNetFrameworkVersion;獲取.Net Framework版本支持Push $1Push $0ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full""Version"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5""Version"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "InstallSuccess"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.0\Setup" "Version"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v2.0.50727" "Version"StrCmp $1 "" +1 +2StrCpy $1 "2.0.50727.832"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v1.1.4322" "Version"StrCmp $1 "" +1 +2StrCpy $1 "1.1.4322.573"StrCmp $0 1 KnowNetFrameworkVersion +1ReadRegDWORD $0 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Install"ReadRegDWORD $1 HKLM "SOFTWARE\Microsoft\.NETFramework\policy\v1.0""Version"StrCmp $1 "" +1 +2StrCpy $1 "1.0.3705.0"StrCmp $0 1 KnowNetFrameworkVersion +1StrCpy $1 "not .NetFramework"KnowNetFrameworkVersion:Pop $0Exch $1FunctionEnd

2.比較版本,并進行安裝。(網上很多使用If判斷的測試沒有效果,所以使用腳本內置的版本號比較方法)

Section - "比較版本號"DetailPrint "正在檢測安裝環境..."Call GetNetFrameworkVersionPop $R1${VersionCompare} "4.5.2" "$R1" $R2${If} $R2 == 0DetailPrint "當前版本($R1),無需安裝組件"${ElseIf} $R2 == 1DetailPrint "當前組件版本($R1)過低,需要安裝(4.5.2)版本的組件"${ElseIf} $R2 == 2DetailPrint "當前版本($R1),無需安裝組件"${EndIf}
SectionEndSection -.NETCall GetNetFrameworkVersionPop $R1${VersionCompare} "4.5.2" $R1 $R2${If} $R2 == 1MessageBox MB_ICONINFORMATION|MB_OK "檢測到當前系統缺少微軟.NetFramework 4.5.2組件,需要進行安裝,此操作有可能引起殺毒軟件誤報。"SetDetailsPrint textonlyDetailPrint "準備安裝.NetFramework 4.5.2組件"SetDetailsPrint listonlySetOutPath "$TEMP"SetOverwrite onFile "Src\NETFramework4.5.2.exe"ExecWait '$TEMP\NETFramework4.5.2.exe ' $R1Delete "$TEMP\NETFramework4.5.2.exe"${EndIf}
SectionEnd

對,就這么多,把這些貼進去之前的腳本,就可以搞定。

?

轉載于:https://www.cnblogs.com/aspnetcores/p/9829853.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/194927.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息