国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 軟件教程 > 正文

NSIS制作軟件升級安裝包完整教程

2020-07-18 16:05:17
字體:
來源:轉載
供稿:網友

NSIS 是“Nullsoft 腳本安裝系統”(Nullsoft Scriptable Installation System) 的縮寫,它是一個免費的 Win32 安裝、卸載系統,采用了簡潔高效的腳本方式。它本來是一個由 Nullsoft 創建并用于作為 Winamp 及其插件發布的系統,但現已被上百個應用程序所應用,作為它們進行程序發布的工具。

相信不是每個人寫的軟件都只發布一次就可以了,肯定要有修改和維護的情況發生。在這種情況下,您可能就需要一個軟件的升級安裝包了。

現在,我們就來一步步把這個安裝包做出來。

NSIS下載地址:m.survivalescaperooms.com/softs/33520.html
前提:用戶已經使用我們的完整安裝包安裝過了,且已經在注冊表中記錄了安裝路徑。

在注冊表中寫入安裝路徑WriteRegStr HKCU "Software/無名智者作品系列" "" $INSTDIR

我們要實現以下功能:

1、運行時檢測注冊表中是否有指定的安裝路徑,如果有,直接進入安裝過程,如果沒有,給一個提示。

2、運行時檢測程序是否運行,如果正在運行則可以選擇強制結束。

3、升級過程中實現解壓文件、運行BAT等操作,且有進度條提示。

4、升級結束時打開升級說明以便用戶查看。

第一步:定義基本框架

"!define PRODUCT_NAME "a"!define PRODUCT_VERSION "1.0.0.1" SetCompressor lzmaSetFont "tahoma" 8RequestExecutionLevel admin !include "MUI2.nsh" !insertmacro MUI_LANGUAGE "SimpChinese" Name "${PRODUCT_NAME}_升級_${PRODUCT_VERSION}"OutFile "${PRODUCT_NAME}_升級_${PRODUCT_VERSION}.exe"InstallDirRegKey HKCU "Software/a" "" Section "升級文件" SEC01 SetDetailsPrint textonly DetailPrint "正在升級 ${PRODUCT_NAME},請單擊關閉按鈕完成升級!" SetDetailsPrint listonly SectionIn RO SetOutPath "$INSTDIR"SetOverwrite ifnewer ;升級文件File "a.EXE" File "Server/更新說明.txt" ;運行BTA nsExec::Exec "$INSTDIR/a.bat" ;指定以記事本打開說明 Exec '"$SYSDIR/notepad.exe" "$INSTDIR/更新說明.txt"' SectionEnd

如果沒有其他錯誤,這時候我們的升級程序就已經可以編譯了。

下面,我們繼續進行完善。

第二步:禁止重復運行

在.onInit區段加入以下代碼

InitPluginsDir ;創建互斥防止重復運行 System::Call 'kernel32::CreateMutexA(i 0, i 0, t "ainstaller") i .r1 ?e' Pop $R0 StrCmp $R0 0 +3 MessageBox MB_OK|MB_ICONEXCLAMATION "有一個 ${PRODUCT_NAME} 升級程序已經運行!" Abort

第三步:加入是否安裝判斷

我們通過檢測注冊中指定鍵值的方式來判斷軟件是否已經正確安裝。

在.onInit區段加入以下代碼

 ;判斷是否已安裝 ReadRegStr $0 HKCU "Software/a" "" StrCmp $0 "" 0 NoAbort MessageBox MB_OK|MB_ICONEXCLAMATION "您未正確安裝本軟件,不能使用此升級程序!" Abort ;退出安裝程序 NoAbort:

第四步:如果程序正在運行則關閉程序

在.onInit區段加入以下代碼

 ;關閉進程 Push $R0 CheckProc: Push "asc.exe" ProcessWork::existsprocess Pop $R0 IntCmp $R0 0 Done MessageBox MB_OKCANCEL|MB_ICONSTOP "升級程序檢測到 ${PRODUCT_NAME} 正在運行。$/r$/n$/r$/n點擊 “確定” 強制關閉${PRODUCT_NAME},繼續升級。$/r$/n點擊 “取消” 退出安裝程序。" IDCANCEL Exit Push "asc.exe" Processwork::KillProcess Sleep 1000 Goto CheckProc Exit: Abort Done: Pop $R0

這時我們會發現整個安裝程序還不是很美觀,那么我們繼續。

第五步:添加MUI

MUI,你懂的!

好,至此,這個軟件升級包就大功告成了。

當然,你還可以在其中加入其他功能,比如更新卸載文件代碼、注冊DLL、設置壁紙、更改主題等,不過,輕狂勸你:這只是一個升級安裝包而已,沒必要搞得功能那么復雜吧!呵呵

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 隆昌县| 贵溪市| 沂南县| 台州市| 安岳县| 武胜县| 伊春市| 汝州市| 龙南县| 辛集市| 获嘉县| 镇远县| 丰台区| 怀仁县| 寿宁县| 宁武县| 高阳县| 武强县| 富锦市| 新安县| 介休市| 察隅县| 诸城市| 康保县| 沛县| 凤翔县| 德兴市| 晴隆县| 土默特左旗| 克什克腾旗| 张家川| 闽清县| 新干县| 呼玛县| 濮阳市| 高要市| 兰坪| 来宾市| 九龙城区| 凤凰县| 太仆寺旗|