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

首頁 > 應用 > 軟件技巧 > 正文

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

2024-07-16 16:56:26
字體:
來源:轉載
供稿:網友

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

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

NSIS

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

前提:用戶已經使用我們的完整安裝包安裝過了,且已經在注冊表中記錄了安裝路徑。

在注冊表中寫入安裝路徑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、設置壁紙、更改主題等,不過,輕狂勸你:這只是一個升級安裝包而已,沒必要搞得功能那么復雜吧!呵呵


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 临沂市| 远安县| 搜索| 临高县| 久治县| 长治县| 积石山| 舞阳县| 辉县市| 镇江市| 三门峡市| 双城市| 开鲁县| 扬中市| 石渠县| 沙雅县| 积石山| 开封县| 买车| 安塞县| 苍山县| 旬阳县| 绍兴县| 田东县| 盘山县| 呈贡县| 灌云县| 黄浦区| 财经| 佳木斯市| 阿坝县| 香港 | 儋州市| 竹山县| 东至县| 舞钢市| 逊克县| 和平县| 长白| 定兴县| 邵武市|