nsi學習之HelloWorld

nsis用於打包window環境安裝、卸載程序,免費開源軟件(不管你用於任何用途)。

window環境打包是做什麼?

也許你見過有的程序,copy個文件夾(或者文件),點擊擴展名是.exe的文件就可以運行,不用安裝呢。這就是沒有打包的程序。有安裝過程的程序就是打包過的。

那打包什麼好處呢?

1.壓縮一個文件夾有什麼好處,打包也有。

2.壓縮包中有很多文件資源,對這個軟件也許你就要普通的功能,也許你需要高級功能,也許你要定製的功能,這些功能需要一些特定的文件資源支撐,其他的文件對你的需要沒有幫助,不需要放那裏浪費空間。總結來說就是選擇你需要的組件,安裝(copy)到你指定的目錄。

3.安裝過程可以設置開機啓動,桌面快捷方式,設置環境變。。。。。。

4.卸載過程可以刪除安裝目錄所有文件,安裝寫入的一些東西,還有打開網頁,讓你反饋意見。。。。。。

 

那就一起來學習nsis吧

nsis執行你寫的nsi腳本,對安裝卸載過程進行控制。

那就從nsi腳本學習開始。

 

首先,工欲善其事必先利其器。

NSIS 3.0.1 正式版漢化增強版
鏈接: https://pan.baidu.com/s/1nuQ58vR 密碼: krpp

 

下載後無需解壓,解壓後殺毒軟件會幹掉裏面的文件(我就遇到過)。打開後直接選擇裏面對應的工具文件即可。裏面還有教程,可以先瀏覽下,瞭解nsi腳本結構,特點。

 

開始第一個nsi腳本HelloWorld.nsi吧。

打包window環境的應用程序,window環境的應用程序你有嗎?沒有的話我用c寫了一個demo(懂C的都知道,就一行代碼,調用window的計算器),

鏈接:  密碼:

也可以自己去編譯或者自己電腦上的exe可執行文件

#include <afxres.h>

void
main(){

//    ShellExecuteA(0,"open", "calc", 0, 0, 3);

   
system("calc");
}

編譯環境不一樣的話頭文件不一樣,vs頭文件引用Windows.h

 

下載後單擊就可以運行,這樣就有了打包的對象。

 

接下來編輯nsi腳本。

 

; 安裝程序初始定義常量

!define PRODUCT_NAME "HelloWorld"

!define PRODUCT_VERSION "1.01"

!define PRODUCT_PUBLISHER "大彬出版社"

!define PRODUCT_WEB_SITE"http://www.jiayun.club"

!define PRODUCT_DIR_REGKEY"Software\Microsoft\Windows\CurrentVersion\App Paths\計算器.exe"

!define PRODUCT_UNINST_KEY"Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"

!define PRODUCT_UNINST_ROOT_KEY"HKLM"

 

SetCompressor lzma

 

; ------ MUI 現代界面定義 (1.67 版本以上兼容)------

!include "MUI.nsh"

 

; MUI 預定義常量

!define MUI_ABORTWARNING

!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"

!define MUI_UNICON"${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

 

; 歡迎頁面

!insertmacro MUI_PAGE_WELCOME

; 許可協議頁面

;!insertmacro MUI_PAGE_LICENSE"..\..\..\..\path\to\licence\YourSoftwareLicence.txt"

; 安裝目錄選擇頁面

!insertmacro MUI_PAGE_DIRECTORY

; 安裝過程頁面

!insertmacro MUI_PAGE_INSTFILES

; 安裝完成頁面

!define MUI_FINISHPAGE_RUN "$INSTDIR\計算器.exe"

!insertmacro MUI_PAGE_FINISH

 

; 安裝卸載過程頁面

!insertmacro MUI_UNPAGE_INSTFILES

 

; 安裝界面包含的語言設置

!insertmacro MUI_LANGUAGE"SimpChinese"

 

; 安裝預釋放文件

!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

; ------ MUI 現代界面定義結束 ------

 

Name "${PRODUCT_NAME}${PRODUCT_VERSION}"

OutFile "Setup.exe"

InstallDir "$PROGRAMFILES\HelloWorld安裝目錄"

InstallDirRegKey HKLM "${PRODUCT_UNINST_KEY}""UninstallString"

ShowInstDetails show

ShowUnInstDetails show

 

Section "MainSection" SEC01

 SetOutPath "$INSTDIR"

 SetOverwrite ifnewer

; 此處是你的可執行文件位置  

 File "計算器.exe"

 CreateDirectory "$SMPROGRAMS\My application"

 CreateShortCut "$SMPROGRAMS\My application\My application.lnk""$INSTDIR\計算器.exe"

 CreateShortCut "$DESKTOP\My application.lnk" "$INSTDIR\計算器.exe"

SectionEnd

 

Section -AdditionalIcons

 WriteIniStr "$INSTDIR\${PRODUCT_NAME}.url""InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"

 CreateShortCut "$SMPROGRAMS\My application\Website.lnk""$INSTDIR\${PRODUCT_NAME}.url"

 CreateShortCut "$SMPROGRAMS\My application\Uninstall.lnk""$INSTDIR\uninst.exe"

SectionEnd

 

Section -Post

 WriteUninstaller "$INSTDIR\uninst.exe"

 WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" """$INSTDIR\計算器.exe"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayName" "$(^Name)"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""UninstallString" "$INSTDIR\uninst.exe"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayIcon" "$INSTDIR\計算器.exe"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""DisplayVersion" "${PRODUCT_VERSION}"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""URLInfoAbout" "${PRODUCT_WEB_SITE}"

 WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}""Publisher" "${PRODUCT_PUBLISHER}"

SectionEnd

 

/******************************

 *  以下是安裝程序的卸載部分  *

 ******************************/

 

Section Uninstall

 Delete "$INSTDIR\${PRODUCT_NAME}.url"

 Delete "$INSTDIR\uninst.exe"

 Delete "$INSTDIR\計算器.exe"

 

 Delete "$SMPROGRAMS\My application\Uninstall.lnk"

 Delete "$SMPROGRAMS\My application\Website.lnk"

 Delete "$DESKTOP\My application.lnk"

 Delete "$SMPROGRAMS\My application\My application.lnk"

 

 RMDir "$SMPROGRAMS\My application"

 

 RMDir "$INSTDIR"

 

 DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY}"${PRODUCT_UNINST_KEY}"

 DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"

 SetAutoClose true

SectionEnd

 

#-- 根據 NSIS 腳本編輯規則,所有Function 區段必須放置在 Section 區段之後編寫,以避免安裝程序出現未可預知的問題。--#

 

# 確認下載界面

Function un.onInit

 MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "您確實要完全移除$(^Name) ,及其所有的組件?" IDYES +2

 Abort

FunctionEnd

 

# 卸載完成後的界面

Function un.onUninstSuccess

 HideWindow

 MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) 已成功地從您的計算機移除。"

FunctionEnd


把腳本文件保存到HelloWorld.nsi中

執行腳本,生成打包後的文件

 


可以測試我們的第一個windows環境安裝包文件了

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章