西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程軟件使用 → NSIS制作軟件升級(jí)安裝包完整教程

NSIS制作軟件升級(jí)安裝包完整教程

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

作者:西西點(diǎn)擊:277次評(píng)論:11次標(biāo)簽: NSIS

EclipseNSIS0.9.81 官方版
  • 類(lèi)型:安裝制作大小:3.6M語(yǔ)言:英文 評(píng)分:5.0
  • 標(biāo)簽:
立即下載

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

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

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

前提:用戶已經(jīng)使用我們的完整安裝包安裝過(guò)了,且已經(jīng)在注冊(cè)表中記錄了安裝路徑。

在注冊(cè)表中寫(xiě)入安裝路徑WriteRegStr HKCU "Software\無(wú)名智者作品系列" "" $INSTDIR

NSIS
10.0
類(lèi)別: 安裝制作    大。13.7M    語(yǔ)言: 中文
查看詳細(xì)信息 >>

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

1、運(yùn)行時(shí)檢測(cè)注冊(cè)表中是否有指定的安裝路徑,如果有,直接進(jìn)入安裝過(guò)程,如果沒(méi)有,給一個(gè)提示。

2、運(yùn)行時(shí)檢測(cè)程序是否運(yùn)行,如果正在運(yùn)行則可以選擇強(qiáng)制結(jié)束。

3、升級(jí)過(guò)程中實(shí)現(xiàn)解壓文件、運(yùn)行BAT等操作,且有進(jìn)度條提示。

4、升級(jí)結(jié)束時(shí)打開(kāi)升級(jí)說(shuō)明以便用戶查看。

第一步:定義基本框架

"!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}_升級(jí)_${PRODUCT_VERSION}"OutFile "${PRODUCT_NAME}_升級(jí)_${PRODUCT_VERSION}.exe"InstallDirRegKey HKCU "Software\a" "" Section "升級(jí)文件" SEC01 SetDetailsPrint textonly DetailPrint "正在升級(jí) ${PRODUCT_NAME},請(qǐng)單擊關(guān)閉按鈕完成升級(jí)!" SetDetailsPrint listonly SectionIn RO SetOutPath "$INSTDIR"SetOverwrite ifnewer ;升級(jí)文件File "a.EXE" File "Server\更新說(shuō)明.txt" ;運(yùn)行BTA nsExec::Exec "$INSTDIR\a.bat" ;指定以記事本打開(kāi)說(shuō)明 Exec '"$SYSDIR\notepad.exe" "$INSTDIR\更新說(shuō)明.txt"' SectionEnd

如果沒(méi)有其他錯(cuò)誤,這時(shí)候我們的升級(jí)程序就已經(jīng)可以編譯了。

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

第二步:禁止重復(fù)運(yùn)行

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

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

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

我們通過(guò)檢測(cè)注冊(cè)中指定鍵值的方式來(lái)判斷軟件是否已經(jīng)正確安裝。

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

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

第四步:如果程序正在運(yùn)行則關(guān)閉程序

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

 ;關(guān)閉進(jìn)程 Push $R0 CheckProc: Push "asc.exe" ProcessWork::existsprocess Pop $R0 IntCmp $R0 0 Done MessageBox MB_OKCANCEL|MB_ICONSTOP "升級(jí)程序檢測(cè)到 ${PRODUCT_NAME} 正在運(yùn)行。$\r$\n$\r$\n點(diǎn)擊 “確定” 強(qiáng)制關(guān)閉${PRODUCT_NAME},繼續(xù)升級(jí)。$\r$\n點(diǎn)擊 “取消” 退出安裝程序。" IDCANCEL Exit Push "asc.exe" Processwork::KillProcess Sleep 1000 Goto CheckProc Exit: Abort Done: Pop $R0

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

第五步:添加MUI

MUI,你懂的!

好,至此,這個(gè)軟件升級(jí)包就大功告成了。

當(dāng)然,你還可以在其中加入其他功能,比如更新卸載文件代碼、注冊(cè)DLL、設(shè)置壁紙、更改主題等,不過(guò),輕狂勸你:這只是一個(gè)升級(jí)安裝包而已,沒(méi)必要搞得功能那么復(fù)雜吧!呵呵

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

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

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

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)