nsis 學習筆記(1)
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)。
在引號里面加入 "${sec2_id} 的名稱:$\n$0" $\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 "$SMPROGRAMS\LoadMaster\Website.lnk" "$INSTDIR\${PROD T_NAME}.url"
CreateShortCut "$SMPROGRAMS\LoadMaster\Uninstall.lnk" "$INSTDIR\uninst.exe"
${Break}
${Case} ${SIMPCHINESE}
; WriteIniStr "$INSTDIR\${PROD T_NAME}.url" "InternetShortcut" "URL" "${PROD T_WEB_SITE}"
CreateDirectory "$SMPROGRAMS\裝箱大師企業版"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" "$INSTDIR\${PROD T_NAME}.url"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk" "$INSTDIR\Man l.chm"
${Break}
${Case} 1028
CreateDirectory "$SMPROGRAMS\裝箱大師企業版"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" "$INSTDIR\${PROD T_NAME}.url"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk" "$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" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
檢測.net用到上面這個函數 $0就是版本號,返回值
還可以用下面的方法,檢測微軟.net安裝路徑的注冊表里面。
讀取索引號,讀取里面的值
在HKLM\software\microsoft\net framework set up 下面
WriteINIStr
INI文件 區段 項 值
WriteIniStr "$INSTDIR\${PROD T_NAME}.url" "InternetShortcut" "URL" "${PROD T_WEB_SITE}"
RMDir
[/r] [/REBOOTOK] 目錄名
刪除指定的目錄(完整路徑)。沒有 /r 參數時只有在目錄為空時才會被刪除
RMDir "$desktop\裝箱大師企業版4.0.lnk" 竟然刪不掉
該為delete 就可
我的理解是 rmdir 刪除的是目錄
delete 刪除的是完整路徑
RMDir /r "$INSTDIR\Media\*.*"
$instdir 就是c:\programs\loadmaster4.0
插入宏,有三種選擇
1.在
D:\Program Files\NSIS\Contrib\Modern UI\system.nsh
2.!incl? "MUI.nsh" 其實就是上面這種選擇
3.在
!incl? "MUI2.nsh"
SMSTARTUP
開始菜單程序/啟動 目錄。該常量的內容(所有用戶或當前用戶)取決於 SetShellVarContext 設置。默認為當前用戶。
$QUICKLAUNCH
在 IE4 活動桌面及以上的快速啟動目錄。如果快速啟動不可用,僅僅返回和 $TEMP 一樣。
!ifdef FULL
!define PROD T_NAME `迅雷Ayu去廣告版`
!define EXEFN `迅雷_${PROD T_VERSION}_Full.exe`
!else
!define PROD T_NAME `迅雷Ayu去廣告精簡版`
!define EXEFN `迅雷_${PROD T_VERSION}_Lite.exe`
!endif
${if} $1 == ""
DetailPrint '$(Associatedfiletypes) *.${ext} $(For) "${desc}"...'
WriteRegStr HKCR "Back.${Project}\.${ext}" "" "_Blank_"
${Else}
DetailPrint '$(Modifyfiletypes) *.${ext} $(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 "$SYSDIR\IniTest"
WriteINIStr "$INSTDIR\test.ini" "MySection" "Val 1" $8
!macro BIMAGE IMAGE PARMS
Push $0
GetTempFileName $0
File /oname=$0 "${IMAGE}"
SetBrandingImage ${PARMS} $0
Delete $0
Pop $0
!macroend
$0 有什么用,file ?
posted @ 2008-10-10 11:33 bl welkin 閱讀(638) | 評論 (2) | 編輯
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" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${if} $lang ge = 1028
strcmp $0 "" 0 +4
Messagebox MB_OK "安裝程序檢測到您計算機上沒有安裝.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}
${if} $lang ge = 1033
strcmp $0 "" 0 +4
Messagebox MB_OK "Detecting that you have not installed .Net Framework 2.0 on your computer, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!"
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" "http://www.microsoft.com/downloads/details.aspx?familyid=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=zh-cn"
abort
${endif}
${if} $3 = 1028
Messagebox MB_ok "安裝程序檢測到您計算機上的.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}
${if} $3 = 1033
Messagebox MB_ok "Detecting your computer .Net Framework version lower than 2.0, your version is $r0, you must first install .Net Framework 2.0 or above, in order to run the installation of this software!"
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 ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "DisplayName" "$(Name)"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "DisplayIcon" "$INSTDIR\LoadMasterMain.exe"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "DisplayVersion" "${PROD T_VERSION}"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${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 "$SMPROGRAMS\LoadMaster\LoadMaster4.0.lnk" "$instdir\LoadMasterMain.exe"
CreateShortCut "$SMPROGRAMS\LoadMaster\Website.lnk" "$INSTDIR\${PROD T_NAME}.url"
createshortcut "$SMPROGRAMS\LoadMaster\Man l.lnk" "$instdir\Man l.chm"
CreateShortCut "$SMPROGRAMS\LoadMaster\Uninstall.lnk" "$INSTDIR\uninst.exe"
createshortcut "$desktop\LoadMaster4.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 "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" "$INSTDIR\${PROD T_NAME}.url"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk" "$INSTDIR\Man l.chm"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版4.0.lnk" "$INSTDIR\LoadMasterMain.exe"
CreateShortCut "$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 "$SMPROGRAMS\裝箱大師企業版\裝箱大師官方網站.lnk" "$INSTDIR\${PROD T_NAME}.url"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版卸載.lnk" "$INSTDIR\uninst.exe"
CreateShortCut "$SMPROGRAMS\裝箱大師企業版\裝箱大師企業版幫助文檔.lnk" "$INSTDIR\Man l.chm"
createshortcut "$smprograms\裝箱大師企業版\裝箱大師企業版4.0.lnk" "$instdir\LoadMasterMain.exe"
createshortcut "$desktop\裝箱大師企業版4.0.lnk" "$instdir\LoadMasterMain.exe"
${Break}
${EndSwitch}
SectionEnd
section woriteunistallreg
writeuninstaller "$instdir\uninst.exe"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "DisplayName" "$(Name)"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "DisplayVersion" "${PROD T_VERSION}"
WriteRegStr ${PROD T_UNINST_ROOT_KEY} "${PROD T_UNINST_KEY}" "URLInfoAbout" "${PROD T_WEB_SITE}"
sectionend
section uninstall
deleteregkey ${PROD T_UNINST_ROOT_KEY} "${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\*.*"
