西西軟件園多重安全檢測下載網站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁西西教程軟件使用 → NSIS制作軟件升級安裝包完整教程

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

相關軟件相關文章發(fā)表評論 來源:西西整理時間:2013/11/12 16:00:30字體大。A-A+

作者:西西點擊:277次評論:11次標簽: NSIS

EclipseNSIS0.9.81 官方版
  • 類型:安裝制作大。3.6M語言:英文 評分:5.0
  • 標簽:
立即下載

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

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

現(xiàn)在,我們就來一步步把這個安裝包做出來。

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

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

NSIS
10.0
類別: 安裝制作    大小:13.7M    語言: 中文
查看詳細信息 >>

我們要實現(xiàn)以下功能:

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

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

3、升級過程中實現(xiàn)解壓文件、運行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

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

下面,我們繼續(xù)進行完善。

第二步:禁止重復運行

在.onInit區(qū)段加入以下代碼

InitPluginsDir ;創(chuàng)建互斥防止重復運行 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區(qū)段加入以下代碼

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

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

在.onInit區(qū)段加入以下代碼

 ;關閉進程 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},繼續(xù)升級。$\r$\n點擊 “取消” 退出安裝程序。" IDCANCEL Exit Push "asc.exe" Processwork::KillProcess Sleep 1000 Goto CheckProc Exit: Abort Done: Pop $R0

這時我們會發(fā)現(xiàn)整個安裝程序還不是很美觀,那么我們繼續(xù)。

第五步:添加MUI

MUI,你懂的!

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

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

    eclipse
    (119)eclipse
    是對的擴展,利用它我們可以在數(shù)據庫和的開發(fā)發(fā)布以及應用程序服務器的整合方面極大的提高工作效率。它是功能豐富的集成開發(fā)環(huán)境,包括了完備的編碼調試測試和發(fā)布功能,完整支持,,,,,,,。分類在結構上,的特征可以被分為類模型開發(fā)工具開發(fā)工具應用程序服務器的連接器項目部署服務數(shù)據庫服務整合幫助...更多>>

    相關評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(11)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字數(shù): 0/500 (您的評論需要經過審核才能顯示)