nsis安裝包_示例指令碼語法解析
轉自:http://www.cnblogs.com/yplong/p/3700817.html
以下是程式碼及解析,其中有底色的部分為指令碼內容。
註釋、!define、變數、!include、常量
; Script generated by the HM NIS Edit Script Wizard.
; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "signjing安裝示例"
!define PRODUCT_VERSION "0.0.0.1"
!define PRODUCT_PUBLISHER "signjing"
!define PRODUCT_WEB_SITE "http://blog.csdn.net/signjing"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\GenPat.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"
; MUI 1.67 compatible ------
!include "MUI.nsh"
; MUI Settings
!define MUI_ABORTWARNING
......
;個性化圖素;
!define MUI_WELCOMEFINISHPAGE_BITMAP "C:\util\nsis_uis\白玉山塔.bmp"
!define MUI_WELCOMEPAGE_TITLE "\r\nsignjing安裝示例嚮導"
!define MUI_WELCOMEPAGE_TEXT "signjing安裝示例是signjing開發的一個NSIS安裝示例軟體。\r\n\r\n 軟體作者:
註釋
以 ; 或 #開始的行為註釋行。可以在命令後面添加註釋,也可以使用C規範的註釋來註釋一行或多行。如果引數需要由;或#開頭,可以用雙引號把它括起來。
如:
; 註釋
# 註釋
/*
註釋
註釋
*/
!define
[/date] 符號 [值]
這個命令將會向全域性定義列表中新增“符號”。這個效果與對編譯器使用 /D命令列切換效果相似。(只有在 !define 命令之後,定義才有效)
如果使用了 /date,則定義的值會被格式化為 strtime格式。strtime 會把代表當前的時間日期轉換為實際的值。例如 %H會轉換為當前時間的 24 小時格式。完整的格式化字串列表你可以查詢MSDN。在 POSIX平臺,你可以使用 man strtime 來獲取列表。
如:
!define USE_SOMETHING
!define VERSION 1.2
!define /date NOW "%H:%M:%S %d %b, %Y"
變數
所有的變數都是全域性的並且可以用於區段和函式。需要注意的是,在預設情況下變數被限制在 1024位元組。要擴大這個限制你需要重新構建一個使用了更大 NSIS_MAX_STRLEN值的 NSIS 或使用特別版本。
!include
檔案這個命令可以將一個檔案包含到指令碼中,就像是指令碼的一部分一樣。請注意,如果一個檔案包含在了另一個目錄中,那麼當前目錄仍是編譯指令碼的地方(不是要包含的檔案所在的目錄)。如果編譯器無法找到檔案,那麼它將會在每一個包含目錄中查詢。
常量
常量通常用在 InstallDir屬性裡。
需要注意的是一些新的常量並不是在所有的 OS上都是正常的。例如 $CDBURN_AREA 僅在 Windows XP及以上系統中才正常。如果在 Windows 98 中使用將會得到空值。除非特別提示,否則該常量都是在所有 OS上有效的。
$PROGRAMFILES
程式檔案目錄(通常為 C:\Program Files但是執行時會檢測)。
$COMMONFILES
公用檔案目錄。這是應用程式共享元件的目錄(通常為 C:\Program Files\Common Files但是執行時會檢測)。
$DESKTOP
Windows 桌面目錄(通常為 C:\windows\desktop但是執行時會檢測)。該常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。
$EXEDIR
安裝程式執行時的位置。(從技術上來說你可以修改改變數,但並不是一個好方法)。
${NSISDIR}
包含 NSIS 安裝目錄的一個標記。在編譯時會檢測到。常用於在你想呼叫一個在 NSIS 目錄下的資源時,例如:圖示、介面……
$WINDIR
Windows 目錄(通常為 C:\windows或 C:\winnt 但在執行時會檢測)
$SYSDIR
Windows 系統目錄(通常為 C:\windows\system或 C:\winnt\system32 但在執行時會檢測)
$TEMP
系統臨時目錄(通常為 C:\windows\temp但在執行時會檢測)
$STARTMENU
開始選單目錄(常用於新增一個開始選單項,使用 CreateShortCut)。該常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext 設定。預設為當前使用者。
$SMPROGRAMS
開始選單程式目錄(當你想定位 $STARTMENU\程式時可以使用它)。該常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext 設定。預設為當前使用者。
$SMSTARTUP
開始選單程式/啟動目錄。該常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。
$QUICKLAUNCH
在 IE4 活動桌面及以上的快速啟動目錄。如果快速啟動不可用,僅僅返回和 $TEMP一樣。
$DOCUMENTS
文件目錄。一個當前使用者典型的路徑形如 C:\Documents and Settings\Foo\My Documents。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext 設定。預設為當前使用者。該常量在 Windows 95且 Internet Explorer 4 沒有安裝時無效。
$SENDTO
該目錄包含了“傳送到”選單快捷項。
$RECENT
該目錄包含了指向使用者最近文件的快捷方式。
$FAVORITES
該目錄包含了指向使用者網路收藏夾、文件等的快捷方式。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。該常量在 Windows 95 且 Internet Explorer 4沒有安裝時無效。
$MUSIC
使用者的音樂檔案目錄。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。該常量僅在 Windows XP、ME及以上才有效。
$PICTURES
使用者的圖片目錄。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。該常量僅在 Windows 2000、XP、ME及以上才有效。
$VIDEOS
使用者的視訊檔案目錄。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。該常量僅在 Windows XP、ME及以上才有效。
$NETHOOD
該目錄包含了可能存在於我的網路位置、網路上的芳鄰資料夾的連結物件。該常量在 Windows 95且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$FONTS
系統字型目錄。
$TEMPLATES
文件模板目錄。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。
$APPDATA
應用程式資料目錄。當前使用者路徑的檢測需要 Internet Explorer 4及以上。所有使用者路徑的檢測需要 Internet Explorer 5 及以上。這個常量的內容(所有使用者或當前使用者)取決於SetShellVarContext設定。預設為當前使用者。該常量在 Windows 95 且 Internet Explorer 4和活動桌面沒有安裝時無效。
$LOCALAPPDATA
本機應用程式資料目錄。該常量僅在 Windows 2000或以上系統有效。.
$PRINTHOOD
該目錄包含了可能存在於印表機資料夾的連結物件。該常量在 Windows 95和 Windows 98 上無效。
$INTERNET_CACHE
Internet Explorer的臨時檔案目錄。該常量在 Windows 95 和 Windows NT且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$COOKIES
Internet Explorer的 Cookies 目錄。該常量在 Windows 95和 Windows NT 且 Internet Explorer 4和活動桌面沒有安裝時無效。
$HISTORY
Internet Explorer的歷史記錄目錄。該常量在 Windows 95 和 Windows NT且 Internet Explorer 4 和活動桌面沒有安裝時無效。
$PROFILE
使用者的個人配置目錄。一個典型的路徑如 C:\Documents and Settings\Foo。該常量在 Windows 2000及以上有效。
$ADMINTOOLS
一個儲存管理工具的目錄。這個常量的內容(所有使用者或當前使用者)取決於 SetShellVarContext設定。預設為當前使用者。該常量在 Windows 2000、ME及以上有效。
$RESOURCES
該資源目錄儲存了主題和其他 Windows資源(通常為 C:\Windows\Resources但在執行時會檢測)。該常量在 Windows XP及以上有效。
$RESOURCES_LOCALIZED
該本地的資源目錄儲存了主題和其他 Windows資源(通常為 C:\Windows\Resources\1033但在執行時會檢測)。該常量在 Windows XP及以上有效。
$CDBURN_AREA
一個在燒錄 CD 時儲存檔案的目錄。該常量在 Windows XP 及以上有效。
$HWNDPARENT
父視窗的十進位制視窗控制代碼。
$PLUGINSDIR
該路徑是一個臨時目錄,當第一次使用一個外掛或一個呼叫 InitPluginsDir時被建立。該資料夾當安裝程式退出時會被自動刪除。這個資料夾的用意是用來儲存給 InstallOptions使用的 INI 檔案、啟動畫面點陣圖或其他外掛執行需要的檔案。
字串裡使用的常量
$$
轉義,用來表示 $。
$\r
用來表示一個回車(\r)。
$\n
用來表示新的一行(\n)。
$\t
用來表示一個 Tab(\t)。
!insertmacro、Name、OutFile、InstallDir、InstallDirRegKey、ShowInstDetails、ShowUnInstDetails、BrandingText
; Welcome page
!insertmacro MUI_PAGE_WELCOME
; License page
!insertmacro MUI_PAGE_LICENSE "協議許可.rtf"
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\Bin\GenPat.exe"
!insertmacro MUI_PAGE_FINISH
; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES
; Language files
!insertmacro MUI_LANGUAGE "SimpChinese"
; MUI end ------
Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
;OutFile "Setup.exe"
;OutFile "${PRODUCT_NAME}.exe"
OutFile "自定義.exe"
InstallDir "$PROGRAMFILES\signjing安裝示例"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show
BrandingText "signjing部落格 http://blog.csdn.net/signjing"
!insertmacro
巨集名稱 [引數] [...]
插入一個由 !macro 建立的巨集的內容。如果建立的巨集帶有引數,那麼你必須按巨集的需求向它傳送足夠的引數。
!macro Print text
DetailPrint "${text}"
!macroend
!insertmacro Print "some text"
!insertmacro Print "some more text"
name
名稱 [雙與名稱]
設定安裝程式的名稱。名稱通常用來顯示產品的名稱比如“我的程式””。如果在名稱裡有一個或多個與符號(&),把第二個引數設為與第一個相同,有 &的地方使用兩個 &來表示。例如你的產品名稱為“foo & bar2000”,那麼使用:
Name "foo & bar2000" "foo && bar2000"
如果你的安裝程式名稱裡有 & 符號並且對名稱使用了一個 LangString,那麼你還需要建立另一個含有雙 &字元的名稱作為第二個引數。
接受變數。如果使用了變數,使用的變數必須在 .onInit被初始化。
outfile
[路徑\]安裝程式.exe
指定 MakeNSIS 要寫入安裝程式的輸出檔案。僅僅是 MakeNSIS 要寫入的檔案,它不會對安裝程式的內容有任何影響。
installdir
預設安裝目錄設定預設的安裝目錄。檢視變數一節得到可用於該字串的變數(尤其是 $PROGRAMFILES)。注意該字串中最後一個 \後面的部分會被保留,當用戶在安裝時選擇“瀏覽”並取得新的目錄字串時,該部分會自動附加在後面(要禁止該行為你需要在目錄字串後面新增一個額外的 \,但是你要使用引號把目錄字串括起來以避免被認為是斷行處理)。如果沒有起作用的話,還是使用瀏覽按鈕吧。
installdirregkey
根鍵子鍵鍵名該屬性讓安裝程式去檢測一登錄檔裡的一個字串,如果該字串可用那麼把它用來作為安裝目錄。如果預置了該屬性,當指定的登錄檔鍵可用時它會越過 InstallDir指定的字串,否則使用預設的 InstallDir 指定值。查詢登錄檔時,該命令將自動截去引號(如 "C:\program files\poop" "%1",可得到 C:\program files\poop )。如果該字串以 .exe結尾,它還會自動移去字串裡的檔名部分(如 C:\program files\poop\poop.exe,將得到 C:\program files\poop )。對於更多高階的安裝目錄配置,可在 .onInit函式裡設定 $INSTDIR。[譯者注:事實上它還可以自動擷取如 "C:\program files\poop\poop.exe" "%1"而得到 C:\program files\poop ,這樣你只要知道了某個程式關聯的檔案型別,就可以直接用它獲得該程式的安裝目錄。比如InstallDirRegKey HKCR "FlashGet.Document\shell\open\command" "" 即可獲得網際快車的安裝目錄]
showinstdetails
相關推薦
nsis安裝包_示例指令碼語法解析
轉自:http://www.cnblogs.com/yplong/p/3700817.html 以下是程式碼及解析,其中有底色的部分為指令碼內容。 註釋、!define、變數、!include、常量 ; Script generated by t
nsis安裝包_手把手教NIS Edit安裝嚮導的使用
轉自:http://blog.csdn.net/signjing/article/details/7855855 示例指令碼解析:http://blog.csdn.net/signjing/article/details/7944160 參考來自:http://blog.c
用inno Setup做應用程式安裝包的示例指令碼(.iss檔案)
{程式安裝前判斷主程式是否在執行} function InitializeSetup(): Boolean; var ResultCode: Integer; begin if RegGetSubkeyNames(HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windo
nsis安裝包(五)_手把手教NIS Edit安裝嚮導的使用
手把手教NIS Edit安裝嚮導的使用 需求的軟體環境: 1 安裝完上述兩款軟體後啟動HM NIS Edit,如圖: 2 點選“檔案”-“新建指令碼:嚮導”,如圖: 3 彈出嚮導歡迎介面,點
NSIS安裝包腳本
lld 安裝完成 page nic dial publisher urn pos tran !addincludedir "include" Var MSG ;MSG變量必須定義,而且在最前面,否則WndProc::onCallback不工作,
減小NSIS安裝包體積的方法
在NSIS指令碼的開頭加入 SetCompressor /SOLID LZMA 可以使得安裝包的體積縮小,通常能縮小20%左右。 這句指令碼的含義是使用固實壓縮,對於多個檔案的壓縮能夠縮小壓縮後的
NSIS 安裝包確保只能有一個安裝例項執行
1、安裝程式只允許有一個執行 Function .onInit InitPluginsDir call hasinited ;建立互斥防止重複執行 System::Call 'kerne
NSIS 安裝包多語言支援
製作安裝時通常都會被要求支援多語言。NSIS對於多語言的支援非常的方便。接下來介紹下如何為NSIS安裝包新增多語言支援。 1.首先在Nsi檔案中新增需要支援的語言的巨集 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI
Visual Studio 2017各版本安裝包離線下載、安裝全解析
pla 離線文件 win10 unit splay and 文件下載 python擴展 erl 轉自 寂靜·櫻花雨 Visual Studio 2017各版本安裝包離線下載、安裝全解析 感謝IT之家網友 寂靜·櫻花雨 的投稿 關於Visual
npm i 安裝依賴包提示字符串解析異常(Unexpected end of JSON input)
npm nodejs json解析異常 請確保網絡較好,個人因為網絡原因折騰了好久,資源庫可以設置為https://registry.npm.taobao.org/ 設置和查看命令如下:npm config set registry="https://registry.npm.taoba
【SU外掛情報局】 Enscape for SketchUp 基礎入門完全解析(附Enscape2.3.3安裝包)
作者 | 活力網-Andrew 同學們大家好! 活力網SU外掛情報局正式開播啦!!! 我們第一期要講的外掛是——一款重量級的實時渲染外掛 那它是一款什麼樣的外掛吶? 他是一款實時渲染的SU外掛 與它類似的軟體有: Lumion Twinmotion Mars 相比 L T
支付寶 App 構建優化解析:通過安裝包重排布優化 Android 端啟動效能
1. 前言 本章節我們將圍繞《支付寶 App 構建優化解析》另啟新系列,細分拆解客戶端在“程式碼管理”、“證書管理”、“版本管理”、“構建打包”等維度的具體實現方案展開討論,帶領大家進一步瞭解支付寶在 App 構建模組下的持續優化。 本節將主要記錄通過對支付寶 Android Apk 檔案的重新佈局,來改
Kettle_js指令碼_示例
Kettle 版本7.0 一,String function 1 .date2str //js操作時間 var dValue = new Date(); //把時間變成字串 var dValue1 = date2str(dValue); //把時間變成當前格式字串 v
Ubiqua抓包工具的安裝教程附帶ZigBee抓包使用和入網流程解析
前言: 無線通訊這玩意是看不見摸不著的,比較炫幻,不像串列埠通訊,想知道通訊的資料,直接接一個USB轉串列埠線,開啟PC串列埠助手就可以看到資料了。 無線不同的地方就是,這玩意還有加密,即使知道金鑰,有的軟體也不能看到資料。這就奇葩了,這個軟體大家都懂得,是TI
華為手機 android8.0APP更新時出現安裝包解析異常的提示及安裝閃退(無反應)問題
apk span nload sdk add ati lag 正常 activit 在做android app升級更新時遇到幾個問題,我用的測試機是華為V10 系統為8.0 一、安裝閃退(無反應) 解決辦法: 只要在Mainfest.xml 中加入權限編碼即可解決 &
使用Gradle編寫蒲公英自動上傳安裝包和更新說明指令碼
Github: github.com/windinwork/… 平時測試中發包的時候,筆者在打完包就直接拖到蒲公英上讓它上傳就完事了。不過前兩天的會議上,測試小姐姐提出要在蒲公英上寫明這次的測試包修改了什麼內容。 筆者一想到上傳完包還要一個個打字說明在這個包我修改了什麼,立即強烈拒絕!但是測試小
Linux學習之軟體包管理-指令碼安裝包
指令碼安裝包安裝: 1、指令碼安裝包是什麼? 1)指令碼安裝包並不是獨立的軟體包型別,常見指令碼安裝方式安裝時使用的是原始碼包。 2)是人為把安裝的過程寫成了自動安裝的指令碼,只要執行指令碼,定義簡單的引數,就可以完成安裝 3)非常類似於Windows下軟體的安裝方式 &nb
輸入對應安裝包版本號自動升級指令碼
指令碼大致如下 ###made by h### if [ -z "$readversion" ]; then echo --------------------------------- #顯示目錄下所有agent安裝包 echo "List file[該目
Mac 出現正在執行安裝包指令碼或等待其他安裝完成的解決辦法
參考資料: https://www.jianshu.com/p/2d75ebf055c5 描述:安裝mysql時出現正在執行安裝包指令碼,等待半小時無果後切出工作管理員,結束安裝器程序,重新開啟安裝包,出現等待其他安裝完成。無法正常安裝。 原因:利用工作管理員殺掉了安裝器但安裝程序仍在進
Shell下製作自解壓安裝包,實現指令碼的簡單加密
一、原理闡述 在 linux 下可以用幾個最基本的命令製作一個自解壓的程式。其原理是:利用 cat 命令可以將兩個檔案連起來(用>>追加也能達到同樣效果),前一個檔案是 shell 指令碼,負責執行解壓和安裝;後一個檔案是一個壓縮包。 把這兩個檔案通過 cat