鍙互浣跨敤MUI鍑芥暟閲岄潰鐨?/span>
MUI_FINISHPAGE_RUN_FUNCTION function
瀹氫箟涓涓?/span>function錛屽嚱鏁伴噷闈㈡墽琛?/span> 瀹夎瀹屾垚鍚庣殑exe
!define MUI_FINISHPAGE_RUN
;瀹夎鍑芥暟瀹氫箟
!define MUI_FINISHPAGE_RUN_FUNCTION "LaunchLink"
!insertmacro MUI_PAGE_FINISH
;function瑕佸啓瀛梥ection涔嬪悗
Function LaunchLink
ExecShell "" "$INSTDIR\*.exe"
FunctionEnd
鐢熸垚鐨勫畨瑁呯▼搴忓拰鍗歌澆紼嬪簭鎺ュ彈涓浜涘懡浠よ鐨勫弬鏁般傝繖浜涘弬鏁板彲浠ヨ鐢ㄦ埛鍦ㄥ畨瑁呰繃紼嬩腑瀵瑰畨瑁呯▼搴忎綔閮ㄥ垎鎺у埗銆?/p>
CRCCheck
force
銆?/li>1 installer.exe /NCRC
2 installer.exe /S
3 installer.exe /D=C:\Program Files\NSIS
4 installer.exe /NCRC /S /D=C:\Program Files\NSIS
5 uninstaller.exe /S _?=C:\Program Files\NSIS
# 闈欓粯鍗歌澆鏃х増鏈茍絳夊緟瀹冨畬鎴愬悗鎵嶇戶緇?/pre>1 ExecWait '"$INSTDIR\uninstaller.exe" /S _?=$INSTDIR'
浠ヤ笂淇℃伅鏉ヨ嚜NSIS甯姪銆備笅闈負瀹炰緥浠g爜錛?/p>1 !define APPLOCALPATH "Test.exe"
2 !define APPPATH "$TEMP\${APPLOCALPATH}"
3
4 OutFile "Test ${__DATE__}.exe"
5
6 Section "Silent MakeNSIS"
7 SetOutPath "$TEMP"
8 File /r "install\*.*"
9 ExecWait '$TEMP\${APPLOCALPATH} /S /D=F:\Program Files\NSIS'
10 Delete '$TEMP\${APPLOCALPATH}'
11 SectionEnd
]]>
鏈鏂扮殑WinVer.nsh涓嬭澆錛?br />http://nsis.sourceforge.net/Include/WinVer.nsh錛堜笅杞藉悗緗簬\NSIS\Inclued涓級
AtLeastWin<version> 媯嫻嬫槸鍚﹂珮浜庢寚瀹氱増鏈?br />IsWin<version> 媯嫻嬫寚瀹氱増鏈紙鍞竴闄愬畾鐗堟湰錛?br />AtMostWin<version> 媯嫻嬫槸鍚︿綆浜庢寚瀹氱増鏈?/p>
<version> 鍏佽鐨勫鹼細
95銆?8銆丮E銆丯T4銆?000銆乆P銆?003銆乂ista銆?008銆?銆?008R2
紺轟緥1錛?/p>
紺轟緥2錛?/p>
1銆佸湪瀹夎鑴氭湰鐨勫紑濮嬪瀹氫箟 LIBRARY_X64銆?/span>
!include "MUI.nsh"
!include "Library.nsh"
;濡傛灉鍋?2浣嶅畨瑁呭寘灝辨妸涓嬪彞娉ㄩ噴銆?/span>
!define LIBRARY_X64
2銆佹敞鍐孋OM緇勪歡錛岄渶鍖呭惈Library.nsh錛岀敤瀹廔nstallLib/UnInstallLib 浠f浛RegDLL/UnRegDLL銆?/span>
;RegDLL "$SYSDIR\ComName.dll"
!insertmacro InstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED "LocalPath\ComName.dll" "$SYSDIR\ComName.dll" $SYSDIR
;UnRegDLL "$SYSDIR\ComName.dll"
!insertmacro UnInstallLib REGDLL NOTSHARED REBOOT_NOTPROTECTED "$SYSDIR\ComName.dll"
3銆佸湪璋冪敤娑夊強娉ㄥ唽琛ㄧ殑鍑芥暟鍓嶇敤 SetRegView 64錛屽悗鐢?SetRegView lastused銆?/span>
!ifdef LIBRARY_X64
SetRegView 64
!endif
WriteRegStr ...
WriteRegStr ...
WriteRegStr ...
!ifdef LIBRARY_X64
SetRegView lastused
!endif
SetRegView鐢ㄦ埛鎵嬪唽錛?/span>
鍦?Windows x64 涓婂叡鏈?縐嶆煡鐪嬫柟寮忋備竴縐嶇敤浜?32-bit 搴旂敤紼嬪簭錛屽彟涓縐嶇敤浜?x64 搴旂敤紼嬪簭銆傞粯璁ゆ儏鍐典笅錛?2-bit 搴旂敤紼嬪簭榪愯鍦?x64 緋葷粺鐨?WOW64 妯″紡涓嬫椂錛屽彧鍏佽浣跨敤 32-bit 鏌ョ湅鏂瑰紡銆備嬌鐢?SetRegView 64
灝嗗厑璁稿畨瑁呯▼搴忓湪 x64 涓闂敞鍐岃〃閿箋?
瀹冨皢褰卞搷
DeleteRegKey,
DeleteRegValue,
EnumRegKey,
EnumRegValue,
ReadRegDWORD,
ReadRegStr,
WriteRegBin,
WriteRegDWORD,
WriteRegStr,
WriteRegExpandStr銆?/span>
瀹冧笉浼氬獎鍝?InstallDirRegKey銆傚彟澶栵紝鍦ㄥ嚱鏁?.onInit 涓篃鍙嬌鐢?ReadRegStr 璇誨彇娉ㄥ唽琛ㄣ?/span>
SetRegView 32
ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion ProgramFilesDir
DetailPrint $0 # prints C:\Program Files (x86)
SetRegView 64
ReadRegStr $0 HKLM Software\Microsoft\Windows\CurrentVersion ProgramFilesDir
DetailPrint $0 # prints C:\Program Files
Function .onInit
SetRegView 64
ReadRegStr $INSTDIR HKLM Software\NSIS ""
SetRegView 32
FunctionEnd
4銆佸湪璋冪敤娑夊強鐩爣鏈哄櫒涓婄郴緇熺洰褰曪紙鍗?SYSDIR錛夌殑鍑芥暟鍓嶇敤 ${DisableX64FSRedirection}銆?/span>
鍦ㄥ畨瑁呭寘鐨勭涓涓猄ection涓皟鐢ㄤ竴嬈″嵆鍙?/span>
!ifdef LIBRARY_X64
${DisableX64FSRedirection}
!endif
5銆佸湪64浣嶇郴緇熶笂 $PROGRAMFILES64 琛ㄧず“Program Files”, $PROGRAMFILES 琛ㄧず “Program Files (x86)”銆?/span>
鍙互鍦ㄥ畨瑁呰剼鏈殑寮濮嬪瀹氫箟涓涓父閲忥紝
!ifdef LIBRARY_X64
!define PROGRAM_FILES_MAP $PROGRAMFILES64
!else
!define PROGRAM_FILES_MAP $PROGRAMFILES
!endif
浠ュ悗鐩存帴鐢?${PROGRAM_FILES_MAP} 浠f浛 $PROGRAMFILES銆?/span>
6銆佸湪.onInit 鍜?un.onInit 涓垽鏂竴涓嬶紝濡傛灉瀹夎鍖呮槸鍦?2浣嶆搷浣滅郴緇熶笂榪愯錛屽垯鍋滄瀹夎銆?/span>
鍙垱寤轟竴涓畯錛岀劧鍚庡湪闇瑕佺殑鍦版柟鎻掑叆銆?/span>
!macro TIP_WHEN_AMD64_INSTALLER_RUNAT_X86
!ifdef LIBRARY_X64
${If} ${RunningX64}
${else}
MessageBox MB_OK|MB_ICONINFORMATION "璇峰湪64浣嶆搷浣滅郴緇熶笅榪愯銆?
Abort
${EndIf}
!endif
!macroend
Function .onInit
!insertmacro TIP_WHEN_AMD64_INSTALLER_RUNAT_X86
SetShellVarContext all ;瀹夎鍒版墍鏈夌敤鎴蜂笅錛宑urrent 琛ㄧず瀹夎鍒板綋鍓嶇敤鎴蜂笅, all 琛ㄧず鎵鏈夌敤鎴蜂笅銆?/span>
FunctionEnd
Function un.onInit
!insertmacro TIP_WHEN_AMD64_INSTALLER_RUNAT_X86
SetShellVarContext all
FunctionEnd
澶囨敞錛?br />1銆佸湪 NSIS 涓殑鏉′歡緙栬瘧鏄?!寮澶達紝涓嶆槸 #寮澶達紝濡?ifdef銆?br />2銆佸COM緇勪歡錛屾垜璁や負搴旇鏄嬌鐢?NOTSHARED 鏂瑰紡娉ㄥ唽銆?br />3銆佸彲浠ュ仛涓壒澶勭悊鏂囦歡錛屼竴嬈℃х敓鎴?2浣?64浣嶇殑瀹夎鍖呫?br /> 濡?x.bat
rem "璁板緱瑕佹妸瀹夎鑴氭湰涓殑 !define LIBRARY_X64 娉ㄩ噴鎺夛紝鍚﹀垯涓嶈兘鐢熸垚32浣嶅畨瑁呭寘銆?
makensis .\myinstaller.nsi
makensis /DLIBRARY_X64 .\myinstaller.nsi
pause