nsis 學習筆記
轉載自 https://www.cnblogs.com/dfdqzp/p/6672396.html
MessageBox MB_OK ‘$$0 is “$0”’ ;$0是某個值
${If} $0 == 'some val ’
MessageBox MB_OK '$$0 is some val ’
${ElseIf} $0 == 'some other val ’
MessageBox MB_OK '$$0 is some other val ’
${Else}
MessageBox MB_OK ‘$$0 is “$0”’
${EndIf}
logiclib 就是使用${IF} 語句 ${while}循環
IntOp
使用者變量輸出
outfile “xunh.exe”
!incl? “logiclib.nsh”
section
StrCpy $R1 0
${While} $R1 < 5
IntOp $R1 $R1 + 1
DetailPrint $R1
${EndWhile}
sectionend
page license ;許可協定頁面
page components;安裝的元件
page directory ;安裝的目錄
page instfiles ;選擇的元件
uninstpage uninstconfirm ;解除安裝确認頁面
uninstpage instfiles ;解除安裝
使用在段裡的指令和安裝程式屬性指令不一樣,他們在使用者電腦運作環境裡執行。這些指令可以解壓檔案讀取和寫入系統資料庫、INI檔案或普通檔案,建立目錄,建立快捷方式和更多功能。你可以在 指令 找到更多。
更多的基本用法說明 SetOutPath 告訴安裝程式要把檔案輸出到哪裡,和要解壓哪些 檔案。
回調函數就相當與一個調用函數,在安裝程式一開始就調用而已
除了區段裡的代碼,還有一些在回調函數裡的代碼也會被執行,而且可能會在區段之前就執行了。比如 .onInit 回調函數就最先被執行,或者在頁面顯示過程中執行某些 頁面回調函數。
outfile “xunh.exe”
!incl? “logiclib.nsh”
section
StrCpy $R1 0
${While} $R1 < 5
IntOp $R1 $R1 + 1
DetailPrint $R1
${EndWhile}
sectionend
Function .onInit
MessageBox MB_YESNO “即将安裝我的程式,要繼續嗎?” IDYES gogogo
Abort
gogogo:
FunctionEnd
條件判斷或執行代碼循環可以使用 StrCmp, IntCmp, IfErrors, Goto 和其它來實作
使用MessageBoxes 或 DetailPrint 來顯示變量内容,對所有變量使用 DumpState 插件來勾畫總體大綱。
定義符号可以通過 !define 定義或使用 /D 指令行切換。這些定義符号可以用于條件編譯
(通過 !ifdef 定義)或用于符号替換(一種格式簡單的宏)。若要用它的值替換一個符号,
請使用 ${符号} (如果沒有定義符号,那麼不會産生轉換)。這個轉換為 first-come-first-served,
一個插件的調用像這樣:
DLL名::函數名 “參數1” “參數2” “參數3”
InstallOptions 是一個受歡迎的插件,它允許你建立自定義的的頁面,并與 NSIS 頁面指令結合(看 頁面)。 開始菜單插件 提供了一個可允許使用者選擇一個開始菜單目錄的頁面。這裡還有許多不同用途的大量插件,檢視 Docs 目錄 裡的幫助檔案和例子。你也可以線上查找另外的插件: NSIS 維客.
引号的作用是是可以包含‘”他們可以是單引号、雙引号或向後的單引号。
$INSTDIR 安裝目錄
$OUTDIR目前輸出路徑
$CMDLINE安裝程式的指令行輸入。
$LANG GE
下面這些都是常量
目前使用的語言辨別符
$DESKTOP
Windows 桌面目錄(通常為 C:\Windows\Desktop 但是運作時會檢測)。該常量的内容(所有使用者或目前使用者)取決于 SetShellVarContext 設定。預設為目前使用者。
$EXEDIR
安裝程式運作時的位置。(從技術上來說你可以修改此變量,但并不是一個好方法)。
$EXEFILE
安裝程式的名稱。
$EXEPATH
安裝程式運作時的完整路徑。
${NSISDIR}
包含 NSIS 安裝目錄的符号定義标記。常用于在你想調用在 NSIS 目錄下的資源時,例如:圖示、界面……
$SYSDIR
Windows 系統目錄(通常為 C:\Windows\System 或 C:\WinNT\System32 但在運作時會檢測)。
$STARTMENU
開始菜單目錄(常用于添加一個開始菜單項,使用 CreateShortCut)。該常量的内容(所有使用者或目前使用者)取決于 SetShellVarContext 設定。預設為目前使用者。
$SMPROGRAMS
開始菜單程式目錄(當你想定位 $STARTMENU\程式 時可以使用它)。該常量的内容(所有使用者或目前使用者)取決于 SetShellVarContext 設定。預設為目前使用者。
$SMSTARTUP
開始菜單程式/啟動 目錄。該常量的内容(所有使用者或目前使用者)取決于 SetShellVarContext 設定。預設為目前使用者。
$ \r \n \t
要顯示
必須使用下面的這個
$
轉義,用來表示 $。
$\r
用來表示一個回車(\r)。
$\n
用來表示新的一行(\n)。
$\t
用來表示一個 Tab(\t)。
在引号裡面加入 “ s e c 2 i d 的 名 稱 : {sec2_id} 的名稱: sec2id的名稱:\n$0” KaTeX parse error: Expected 'EOF', got '\n' at position 1: \̲n̲ ̲表示新的一行,且不顯示,去掉将顯示
每個内建的頁面都有三個回調函數。一個預置函數、一個顯示建立函數和一個離開函數
一個自定義的頁面僅有兩個回調函數,一個是必須的建立頁面,另一個離開函數的作用就和内建頁面的離開函數一樣。
Page
custom [建立函數] [離開函數] [标題] [/ENABLECANCEL]
或
内置的頁面類型 [預置函數] [顯示函數] [離開函數] [/ENABLECANCEL]
要添加一個安裝程式頁面,請看上面關于相對于自定義頁面的内建頁面和關于回調函數的段。
内置的頁面類型 :
license - 許可協定頁面
components - 元件選擇頁面
directory - 安裝目錄選擇頁面
instfiles - 安裝執行頁面
uninstConfirm - 解除安裝确認頁面
" "引号好像在NSIS裡面沒有用
StrCpy $0 1
MessageBox MB_OK ‘$0’ 就顯示1
StrCpy $0 1
MessageBox MB_OK '$0 is $0 ’ 1 is 1
學會了調試
看到了
一般函數名以 . 開頭的(例如 “.Whatever”)作為回調函數保留
也就是說:以.開頭的是回調函數
SendMessage
視窗句柄 消息 第一個消息參數 第二個消息參數 [使用者變量(傳回值)] [/TIMEOUT=毫秒]
AddBrandingImage
(left|right|top|bottom) (寬|高)
AddBrandingImage left 0
AddBrandingImage right 50
AddBrandingImage top 20
AddBrandingImage bottom 35
AddBrandingImage left 100 5
安裝程式界面 ,預設為0
頁面選項
下面的這個清單列出了某個頁面類型受什麼樣的指令影響。除非特别提及,否則這些指令都可以在 PageEx 區塊内外使用。如果在一個 PageEx 區塊内部使用那麼他們僅僅對由 PageEx 設定的目前頁面産生影響,否則他們将被設為其他所有頁面的預設值。
許可頁面
LicenseText
LicenseData
LicenseForceSelection
元件選擇頁面
ComponentText
目錄選擇頁面
DirText
DirVar - 僅能在 PageEx 裡使用。
DirVerify
解除安裝、安裝記錄頁面
DetailsButtonText
CompletedText
解除安裝确認頁面
DirVar - 僅能在 PageEx 裡使用。
UninstallText
要設定頁面标題請使用 Caption。
Icon
[路徑]圖示檔案.ico
設定安裝程式的圖示。在圖示檔案裡的每一個圖示将會被包含在安裝程式裡
icon 功能強大,輸出的EXE檔案圖示和安裝時用的圖示都是它
例如它:icon f:\t \LD.ico
$INSTDIR
安裝目錄
是安裝變量
$PROGRAMFILES是安裝常量
$lang ge 是變量,英語是1033
繁體中文是1028
簡體中文是2052
WriteRegStr是寫入系統資料庫
解決了系統資料庫的問題
WriteRegStr HKLM software\loadmaster version “4.0”
writeregstr HKLM software\loadmaster path “$INSTDIR”
$instdir 是變量,路徑,解決。
呵呵,又測試成功
InstallDir $programfiles\Loadmaster1
InstallDirRegKey HKLM Software\loadmaster path
InstallDirRegKey 的作用是檢測以前的安裝路徑
LoadLang geFile
語言檔案.nlf
載入語言檔案
loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\SimpChinese.nlf”
;loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\English.nlf”
如果用;loadlang gefile SimpChinese.nlf
loadlang gefile English.nlf
不知道缺少了哪個頭檔案
$LANG GE
目前使用的語言辨別符,是一個變量。
使用loadlang gefile對于的語言 ID将會被定義(例如: ${LANG_ENGLISH} 将會被定義為 1033)。
檢測語言,然後顯示許可 功能已經完成
LicenseLangString ln ${LANG_SIMPCHINESE} f:\cnlicence.txt
LicenseLangString ln ${LANG_ENGLISH} f:\enlicence.txt
LicenseLangString license ${LANG_TRADCHINESE} f:\tnlicence.txt
LicenseData $(ln)
Pop
使用者變量(輸出)
從堆棧裡彈出一個字串到使用者變量 $x。如果堆棧是空的,則會置一個錯誤标記。
Push 1
Push 2
Exch
Pop $0 # = 1
彈出 1指派給變量 $0
學會了SWITCH 語句
outfile “switch.exe”
!incl? “LogicLib.nsh”
page instfiles
section
StrCpy $0 “2”
${switch} $0
${Case} 1
SetOutPath “$programfiles”
file “f:\t \pic.bmp”
${Break}
${Case} 2
SetOutPath “$programfiles”
file “f:\t \pic2.bmp”
${Break}
${EndSwitch}
問:如何運作一個安裝檔案 .reg
答:注:your.reg為檔案名
ExecWait “regedit.exe /s your.reg”
問:如何運作一個安裝檔案 .inf
答:注:skins.inf 為檔案名
ExecWait “RunDll32 advpack.dll,LaunchINFSection skins.inf,DefaultInstall”
問:如何運作一個安裝檔案 .msi
答:注:soapsdk.msi為檔案名
Execwait
msiexec /qn /i "soapsdk.msi"
問: 關聯檔案圖示後,圖示沒變化。
答: 重新整理圖示
‘System::Call shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)’
問:安裝窗體變窄了。
答:
SetFont /LANG=2052 “tahoma” 8
原問題見文章 http://www.dreams8.com/thread-3961-1-1.html
問:如何運作一個批處理檔案 .bat
答:注:your.bat為檔案名
ExecWait “your.bat”
不顯示黑框框
nsExec::Exec"your.bat"
sectionend
ReadRegDWORD
使用者變量(輸出) 根鍵 子鍵 項
ReadRegStr
使用者變量(輸出) 根鍵 子鍵 項
WriteRegBin
根鍵 子鍵 項 值資料
該指令将會寫一個區塊的二進制資料到系統資料庫
WriteRegStr
根鍵 子鍵 項 值
把字串寫入系統資料庫
EnumRegKey
使用者變量(輸出) 根鍵 子鍵 索引
與
ReadRegStr 相得益彰呵呵,一個讀變量名,一個讀裡面的内容
ReadRegStr
使用者變量(輸出) 根鍵 子鍵 項
ClearErrors
清除錯誤位标記。
ExecShell " open" “http://nsis.sf.net/” 空了一格都運作錯誤
${NSD_CreateText} 0 13u 100% 12u 最後一個為高度
FindWindow
使用者變量(視窗句柄輸出) 視窗類名 [視窗标題] [父視窗句柄] [childafter]
GetDlgItem
使用者變量(輸出) 視窗句柄 控件ID
Section -AdditionalIcons
${switch} $lang ge
${Case} ${LANG_ENGLISH}
; WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”
CreateDirectory “$SMPROGRAMS\LoadMaster”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Website.lnk" "INSTDIR${PROD T_NAME}.url”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Uninstall.lnk"…INSTDIR\uninst.exe”
${Break}
${Case} ${SIMPCHINESE}
; WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”
CreateDirectory “$SMPROGRAMS\裝箱大師企業版”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”
${Break}
${Case} 1028
CreateDirectory “$SMPROGRAMS\裝箱大師企業版”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”
${Break}
${EndSwitch}
SectionEnd
InstallDir $programfiles\LoadMaster
InstallDirRegKey HKLM Software\loadmaster path
檢測安裝程式以前的路徑,如果有,則安裝在以前的目錄下
SectionIn 如果指定 RO 作為一個參數,則該區段将被設為隻讀區段,
SetBrandingImage
[/IMGID=對話裡的ID項] [/RESIZETOFIT] 位圖.bmp
如果指定了 /RESIZETOFIT 則圖像會自動改變尺寸到圖像控件的大小。
Page license licenseImage
Function licenseImage
PAGE還可以這樣用
delete $SMPROGRAMS\LoadMaster
删除不了,下面的這個可以
RMDir “$SMPROGRAMS\LoadMaster”
SetAutoClose tr 自動關閉界面,
如自動關閉解除安裝界面
在section unistall
delete …
setautoclose
sentionend
/nounload的作用
當插件指令執行時 NSIS 将會解壓所需的插件 DLL 檔案到一個臨時目錄 ($PLUGINSDIR),把指定的參數全部壓入(從右到左次序),然後執行 DLL 函數。如果指定了 /NOUNLOAD 選項則插件将不會解除安裝直到安裝程式退出或下一次你使用該插件并不帶 /NOUNLOAD 參數。需要注意的是最後一次調用該插件的時候必須不能有 /NOUNLOAD 否則插件将不能從 $PLUGINSDIR 裡删除,而導緻垃圾檔案留在使用者的機器裡。
檢視安裝程式内部的語言在
D:\Program Files\NSIS\Contrib\Lang ge files\simpchinese.nsh 檔案夾
v2.0.1.0
怎樣去掉V
其實把它當作一個字元串,從第一個往後賦給一個新的變量
StrCpy $R0 $0 “” 1
intop $8 $r0 - 2
System::Call “Kernel32::GetSystemDefaultLangID(v …) i .s”
Pop $3
檢測系統語言,用到上面這個DLL。system 是DLL,CALL是函數
Push $0
Push $1
messagebox MB_OK “$lang ge”
System::Call “mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u”
${if} $lang ge = 2052
StrCmp $0 “” 0 +4
Messagebox MB_OK "安裝程式檢測到您計算機上沒有安裝.Net Framework 2.0,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運作本軟體! "
ExecShell “open” “ ( A s s o c i a t e d f i l e t y p e s ) ∗ . (Associatedfiletypes) *. (Associatedfiletypes)∗.{ext} ( F o r ) " (For) " (For)"{desc}"…’
WriteRegStr HKCR “Back.KaTeX parse error: Can't use function '\.' in math mode at position 10: {Project}\̲.̲{ext}” “” “Blank”
${Else}
DetailPrint ‘ ( M o d i f y f i l e t y p e s ) ∗ . (Modifyfiletypes) *. (Modifyfiletypes)∗.{ext} ( F o r ) " (For) " (For)"{desc}"…’
${EndIf}
If|Unless…{ElseIf|ElseUnless}…[Else]…EndIf|EndUnless
- 有條件的執行一個語句區塊,取決于表達式。
AndIf|AndUnless|OrIf|OrUnless
- 給 If, Unless, ElseIf 和 ElseUnless 增加額外的條件語句。
添加解除安裝資訊到添加/删除面闆
WriteRegStr HKLM “Software\Microsoft\Windows\CurrentVersion\Uninstall\Prod t” “DisplayName” “Application Name”
基本用法:
makensis.exe myscript.nsi
安靜模式:
makensis.exe /V1 myscript.nsi
指令行問題。。?
LicenseText
[文本 [按鈕文本]]
licensetext 請先閱讀協定 我同意
licenseforceselection radiobuttons “我接受”“我不接受”
使用引号,參數可以不用空格,如上
BGFont
[字型名稱 [字型高度 [字型寬度] [/ITALIC] [/UNDERLINE] [/STRIKE]]] ?
指派表達式在哪?!define 不能對變量
呵呵,又測試成功
InstallDir $programfiles\Loadmaster1
InstallDirRegKey HKLM Software\loadmaster path
InstallDirRegKey 的作用是檢測以前的安裝路徑
載入語言檔案
loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\SimpChinese.nlf”
;loadlang gefile “D:\Program Files\NSIS\Contrib\Lang ge files\English.nlf”
如果用;loadlang gefile SimpChinese.nlf
loadlang gefile English.nlf
不知道缺少了哪個頭檔案
基本上你有 25 個寄存器(20 個正常用途,5 個特殊用途),和一個堆棧。隻有20個啊。
WriteINIStr 寫入項值,有什麼作用?
WriteINIStr
INI檔案 區段 項 值
StrCpy 8 " 8 " 8"SYSDIR\IniTest"
WriteINIStr “$INSTDIR\test.ini” “MySection” “Val 1” $8
!macro BIMAGE IMAGE PARMS
Push $0
GetTempFileName $0
File /oname= 0 " 0 " 0"{IMAGE}"
SetBrandingImage ${PARMS} $0
Delete $0
Pop $0
!macroend
$0 有什麼用,file ?
posted @ 2008-10-10 11:33 bl welkin 閱讀(638) | 評論 (2) | 編輯
我做的NSIS程式
outfile “LoadMaster_Enterprise_Multilang ge_Setup.exe”
;!incl? “D:\Program Files\NSIS\Contrib\Modern UI\system.nsh”
!incl? “${NSISDIR}\Incl?\LogicLib.nsh”
!define PROD T_NAME “LoadMaster”
!define PROD T_VERSION “4.0”
!define PROD T_WEB_SITE “http://www.zh ngxiang.com”
!define PROD T_UNINST_KEY “Software\Microsoft\Windows\CurrentVersion\Uninstall${PROD T_NAME}”
!define PROD T_UNINST_ROOT_KEY “HKLM”
!define MUI_WELCOMEFINISHPAGE_BITMAP “F:\t \pic.bmp”
!incl? “MUI2.nsh”
!incl? WordFunc.nsh
SetCompressor lzma
XPStyle on
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE “$(ln)”
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANG GE “English”
!insertmacro MUI_LANG GE “SimpChinese”
!insertmacro MUI_LANG GE “TradChinese”
icon f:\t \LD.ico
uninstallicon “${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico”
InstallDir “$programfiles\LoadMaster4.0”
BrandingText “http://www.zh ngxiang.com/”
Name $(Name)
LangString Name ${LANG_ENGLISH} “LoadMaster_Enterprise”
LangString Name ${LANG_SIMPCHINESE} “裝箱大師企業版”
LangString name 1028 “裝箱大師企業版”
ShowInstDetails show
ShowUnInstDetails show
Section “MainSection”
setoutpath $INSTDIR
;file /r “f:\abc*.*”
file /r “f:\workspace2*.*”
createdirectory $SYSDIR\vcredist_x86
setoutpath $SYSDIR\vcredist_x86
ExecWait ‘"$INSTDIR\vcredist_x86.exe"’
delete “$instdir\vcredist_x86.exe”
SectionEnd
function .onInit
System::Call “Kernel32::GetSystemDefaultLangID(v …) i .s”
Pop $3
${if} $3 = 2052
call cn
${endif}
${if} $3 = 1033
call en
${endif}
${if} $3 = 1028
call tn
${endif}
Push $0
Push $1
System::Call “mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1 ?u”
${if} $lang ge = 2052
StrCmp $0 “” 0 +4
Messagebox MB_OK "安裝程式檢測到您計算機上沒有安裝.Net Framework 2.0,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運作本軟體! "
ExecShell “open” “安裝程式檢測到您計算機上沒有安裝.Net Framework 2.0,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件! "
ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn”
abort
${endif}
StrCpy $R0 $0 “” 1
intop $8 $r0 - 2
${if} $8 < 0
${if} $3 = 2052
Messagebox MB_ok “安裝程式檢測到您計算機上的.Net Framework 版本低于2.0,您的版本是$r0 ,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運作本軟體!”
ExecShell “open” “安裝程式檢測到您計算機上的.Net Framework 版本低於2.0,您的版本是$r0 ,您必須先安裝.Net Framework 2.0 或以上版本,才能安裝運行本軟件!”
ExecShell “open” “http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn”
abort
${endif}
${endif}
FunctionEnd
function cn
Push “”
Push ${LANG_ENGLISH}
push “English”
push ${LANG_TRADCHINESE}
Push “繁體中文”
Push ${LANG_SIMPCHINESE}
Push “簡體中文”
Push A
LangDLL::LangDialog " 安裝語言" “請選擇安裝語言與軟體界面”
Pop $LANG GE
StrCmp $LANG GE “cancel” 0 +2
Abort
functionend
function en
Push “”
Push ${LANG_ENGLISH}
push “English”
push ${LANG_TRADCHINESE}
Push “繁體中文”
Push ${LANG_SIMPCHINESE}
Push “簡體中文”
Push A
LangDLL::LangDialog “Installer Lang ge” "Please select a lang ge and software interface lang ge "
Pop $LANG GE
StrCmp $LANG GE “cancel” 0 +2
Abort
functionend
function tn
Push “”
Push ${LANG_ENGLISH}
push “English”
push ${LANG_TRADCHINESE}
Push “繁體中文”
Push ${LANG_SIMPCHINESE}
Push “簡體中文”
Push A
LangDLL::LangDialog " 安裝語言" “請選擇安裝語言與軟件界面”
Pop $LANG GE
strcpy $0 $lang ge
StrCmp $LANG GE “cancel” 0 +2
Abort
functionend
section writeregedit
setoutpath $INSTDIR
WriteRegStr HKLM software\LoadMaster version "${PROD T_VERSION} "
writeregstr HKLM software\LoadMaster path “$INSTDIR”
writeregstr HKLM software\LoadMaster lang ge “$LANG GE”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayName” “$(Name)”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “UninstallString” “$INSTDIR\uninst.exe”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayIcon” “$INSTDIR\LoadMasterMain.exe”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayVersion” “${PROD T_VERSION}”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “URLInfoAbout” “${PROD T_WEB_SITE}”
sectionend
LicenseLangString ln ${LANG_ENGLISH} f:\enlicense2.txt
LicenseLangString ln ${LANG_TRADCHINESE} f:\tnlicense2.txt
LicenseLangString ln ${LANG_SIMPCHINESE} f:\cnlicense2.txt
Section -AdditionalIcons
${switch} $lang ge
${Case} 1033
SetOutPath “$INSTDIR”
file “f:\en\LoadMasterMain.exe.config”
WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”
CreateDirectory “$SMPROGRAMS\LoadMaster”
createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\LoadMaster4.0.…instdir\LoadMasterMain.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Website.lnk" "INSTDIR${PROD T_NAME}.url”
createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Man l.lnk" "instdir\Man l.chm”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 11: SMPROGRAMS\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲\Uninstall.lnk"…INSTDIR\uninst.exe”
createshortcut “KaTeX parse error: Expected 'EOF', got '\LoadMaster' at position 8: desktop\̲L̲o̲a̲d̲M̲a̲s̲t̲e̲r̲4.0.lnk" "instdir\LoadMasterMain.exe”
${Break}
${Case} 2052
SetOutPath “$INSTDIR”
file “f:\cn\LoadMasterMain.exe.config”
WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”
CreateDirectory “$SMPROGRAMS\裝箱大師企業版”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版4…INSTDIR\LoadMasterMain.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 8: DESKTOP\̲裝̲箱大師企業版4.0.lnk" …INSTDIR\LoadMasterMain.exe”
${Break}
${Case} 1028
SetOutPath “$INSTDIR”
file “f:\tn\LoadMasterMain.exe.config”
WriteIniStr “$INSTDIR${PROD T_NAME}.url” “InternetShortcut” “URL” “${PROD T_WEB_SITE}”
CreateDirectory “$SMPROGRAMS\裝箱大師企業版”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師官方網站…INSTDIR${PROD T_NAME}.url”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版卸…INSTDIR\uninst.exe”
CreateShortCut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: SMPROGRAMS\̲裝̲箱大師企業版\裝箱大師企業版幫…INSTDIR\Man l.chm”
createshortcut “KaTeX parse error: Expected 'EOF', got '\裝' at position 11: smprograms\̲裝̲箱大師企業版\裝箱大師企業版4…instdir\LoadMasterMain.exe”
createshortcut “KaTeX parse error: Expected 'EOF', got '\裝' at position 8: desktop\̲裝̲箱大師企業版4.0.lnk" …instdir\LoadMasterMain.exe”
${Break}
${EndSwitch}
SectionEnd
section woriteunistallreg
writeuninstaller “$instdir\uninst.exe”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayName” “$(Name)”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “UninstallString” “$INSTDIR\uninst.exe”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “DisplayVersion” “${PROD T_VERSION}”
WriteRegStr P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}" “URLInfoAbout” “${PROD T_WEB_SITE}”
sectionend
section uninstall
deleteregkey P R O D T U N I N S T R O O T K E Y " {PROD T_UNINST_ROOT_KEY} " PRODTUNINSTROOTKEY"{PROD T_UNINST_KEY}"
deleteregkey hklm software\LoadMaster\path
deleteregkey HKLM software\LoadMaster\version
; messagebox MB_OK “$5”
${if} $5 = 2052
Delete “$INSTDIR${PROD T_NAME}.url”
Delete “$INSTDIR\uninst.exe”
Delete “$INSTDIR\templet.zh-CHN.xls”
Delete “$INSTDIR\templet.zh-CN.xls”
Delete “$INSTDIR\templet.xls”
Delete “$INSTDIR\resources.cfg”
Delete “$INSTDIR\Man l.chm”
Delete “$INSTDIR\Mogre.dll”
Delete “$INSTDIR\MOIS.dll”
Delete “$INSTDIR\Ogre.log”
Delete “$INSTDIR\OgreMain.dll”
Delete “$INSTDIR\OIS.dll”
Delete “$INSTDIR\plugins.cfg”
delete “$instdir\Plugin_OctreeSceneManager.dll”
Delete “$INSTDIR\RenderSystem_Direct3D9.dll”
Delete “$INSTDIR\RenderSystem_GL.dll”
delete “$instdir\D3DX9_39.dll”
delete “$instdir\LoadMasterUIControlLibrary.dll”
delete “$instdir\ToolsForDataTransfer.exe”
delete “$instdir\裝箱大師新增功能.txt”
Delete “$INSTDIR\Csla.dll”
Delete “$INSTDIR\database.mdb”
Delete “$INSTDIR\GEARS.ico”
Delete “$INSTDIR\HID.exe”
Delete “$INSTDIR\LoadMasterMain.exe”
Delete “$INSTDIR\LoadMasterMain.exe.config”
Delete “$INSTDIR\cg.dll”
Delete “$INSTDIR\csgl.dll”
Delete “$INSTDIR\csgl.native.dll”
RMDir /r “$INSTDIR\Media*.*”
RMDir /r “$INSTDIR\zh-CN*.*”
RMDir /r “$INSTDIR\zh-HK*.*”
Delete “$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版解除安裝.lnk”
Delete “$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk”
Delete “$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk”
Delete “$DESKTOP\裝箱大師企業版4.0.lnk”
Delete “$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版4.0.lnk”
RMDir “$INSTDIR”
RMDir “$SMPROGRAMS\裝箱大師企業版”
SetAutoClose tr
${endif}
${if} $5 = 1033
Delete “$INSTDIR${PROD T_NAME}.url”
Delete “$INSTDIR\uninst.exe”
Delete “$INSTDIR\templet.zh-CHN.xls”
Delete “$INSTDIR\templet.zh-CN.xls”
Delete “$INSTDIR\templet.xls”
Delete “$INSTDIR\resources.cfg”
Delete “$INSTDIR\Man l.chm”
Delete “$INSTDIR\Mogre.dll”
Delete “$INSTDIR\MOIS.dll”
Delete “$INSTDIR\Ogre.log”
Delete “$INSTDIR\OgreMain.dll”
Delete “$INSTDIR\OIS.dll”
Delete “$INSTDIR\plugins.cfg”
delete “$instdir\Plugin_OctreeSceneManager.dll”
Delete “$INSTDIR\RenderSystem_Direct3D9.dll”
Delete “$INSTDIR\RenderSystem_GL.dll”
delete “$instdir\D3DX9_39.dll”
delete “$instdir\LoadMasterUIControlLibrary.dll”
delete “$instdir\ToolsForDataTransfer.exe”
delete “$instdir\裝箱大師新增功能.txt”
Delete “$INSTDIR\Csla.dll”
Delete “$INSTDIR\database.mdb”
Delete “$INSTDIR\GEARS.ico”
Delete “$INSTDIR\HID.exe”
Delete “$INSTDIR\LoadMasterMain.exe”
Delete “$INSTDIR\LoadMasterMain.exe.config”
Delete “$INSTDIR\cg.dll”
Delete “$INSTDIR\csgl.dll”
Delete “$INSTDIR\csgl.native.dll”
RMDir /r “$INSTDIR\Media*.*”
RMDir /r “$INSTDIR\zh-CN*.*”
RMDir /r “$INSTDIR\zh-HK*.*”
Delete “$SMPROGRAMS\LoadMaster\Website.lnk”
Delete “$SMPROGRAMS\LoadMaster\Uninstall.lnk”
Delete “$SMPROGRAMS\LoadMaster\Man l.lnk”
delete “$smprograms\LoadMaster\LoadMaster4.0.lnk”
RMDir “$INSTDIR”
RMDir “$SMPROGRAMS\LoadMaster”
delete “$desktop\LoadMaster4.0.lnk”
SetAutoClose tr
${endif}
${if} $5 = 1028
Delete “$INSTDIR${PROD T_NAME}.url”
Delete “$INSTDIR\uninst.exe”
Delete “$INSTDIR\templet.zh-CHN.xls”
Delete “$INSTDIR\templet.zh-CN.xls”
Delete “$INSTDIR\templet.xls”
Delete “$INSTDIR\resources.cfg”
Delete “$INSTDIR\Man l.chm”
Delete “$INSTDIR\Mogre.dll”
Delete “$INSTDIR\MOIS.dll”
Delete “$INSTDIR\Ogre.log”
Delete “$INSTDIR\OgreMain.dll”
Delete “$INSTDIR\OIS.dll”
Delete “$INSTDIR\plugins.cfg”
delete “$instdir\Plugin_OctreeSceneManager.dll”
Delete “$INSTDIR\RenderSystem_Direct3D9.dll”
Delete “$INSTDIR\RenderSystem_GL.dll”
delete “$instdir\D3DX9_39.dll”
delete “$instdir\LoadMasterUIControlLibrary.dll”
delete “$instdir\ToolsForDataTransfer.exe”
delete “$instdir\裝箱大師新增功能.txt”
Delete “$INSTDIR\Csla.dll”
Delete “$INSTDIR\database.mdb”
Delete “$INSTDIR\GEARS.ico”
Delete “$INSTDIR\HID.exe”
Delete “$INSTDIR\LoadMasterMain.exe”
Delete “$INSTDIR\LoadMasterMain.exe.config”
Delete “$INSTDIR\cg.dll”
Delete “$INSTDIR\csgl.dll”
Delete “$INSTDIR\csgl.native.dll”
RMDir /r “$INSTDIR\Media*.*”
RMDir /r “$INSTDIR\zh-CN*.*”
RMDir /r “$INSTDIR\zh-HK*.*”