E D R , A S I H C RSS

NSIS

1. NSIS

1.1. Opening Statement

ณดํ†ต ํ”„กœทธžจ„ ฐœฐœํ•˜ณ  ‚˜„œ 'งŒ“ค—ˆ‹ค' กœ ‚˜Š” ฒฝšฐ€ งŽ‹ค. ํ•˜€งŒ,  •ž‘ ฐฐํฌ•Œ—Š” ํ• ด งŽ‹ค. ํŠํžˆ  œ–ดํŒ ํ”„กœทธžจ “ก/‚ญ œ — “ก˜Š” ฐฉ‹ด˜€,  ˆ€ŠคํŠธฆฌ “œฆฐ‹ค˜€, Program Files ํด”— ณต‚ฌํ•œ‹ค˜€. ด ฒฝšฐ—Š” ณดํ†ต  „šฉ Installer ํ”„กœทธžจ„ “ฐฒŒ ˜€งŒ, •„ง  œŒ€กœ จณธ  ด —†—ˆ˜ ฒƒ ฐ™‹ค.

ดฒˆ—Š” 'ฐฐํฌ' Š” …€„— Œ€ํ•ด ด› „ งžถฐณดณ ž, ธŠคํ†จŸฌค‘ ํ•˜‚˜ธ NSIS — Œ€ํ•ด „‹จํžˆ  •ฆฌํ•˜ณ ž ํ•œ‹ค. (ž.. ด œ ํ€ ‚ดฉด„œ งŒ“  ํ”„กœทธžจ ณด—ฌž. ^^; ดฒŒ €žฅ ํฐ ชฉ . --;)

nsis Š” free software ดฉฐ, †ŒŠค€ ณตฐœ˜–ดžˆ‹ค. €‹ฌžˆŠ” ‚ฌžŒ“ค€ „„ํ•ดณด‹œธธ.

1.2. ฐธกฐ งํฌ

1.3.  „ฒด  •

NSIS˜ ›ฆฌŠ” „‹จํ•˜‹ค. nsi Š” ŠคํฌฆฝํŠธ ํ™”„ ํ•ด„ํ•ด„œ ํ•ด‹ งžŠ” ํ”„กœทธžจ“ค„ ํ•˜‚˜˜ ํ™”กœ ••ถ•‹œํ‚คณ  ‹คํ–‰ํ”„กœทธžจœกœ งŒ“œŠ” ฒƒด‹ค. (งˆ˜ ฐฐ˜ํ™”„ ž‘„ํ•œ‹คณ  ƒฐํ• ˆ˜„ žˆฒ ‹ค.)

  1. ํ”„กœทธžจ„ ฐœฐœํ•œ‹ค.
  2. NSI Script ž‘„ํ•œ‹ค.
  3. makensis กœ Script ปดํŒŒํ•œ‹ค. ทธŸฌฉด makensis Š” ŠคํฌฆฝํŠธ „„ํ•˜ฉด„œ ํฌํ•จํ•ด• ํ•  ํ™”“ค„ ํ•˜‚˜กœ ฌถ–ด€‹ค. ทธฆฌณ  zip˜ ํ˜•‹œกœ ••ถ•ํ•ด€‹ค. (‚ด€ œกœ zip2exe € ดšฉœ‹ค. ดด zlib ‚ฌšฉจ.)
  4. ํ•˜‚˜˜ Install ํ™” ƒ„. ™„ฃŒ. (ฟŒฆฌž~ -_-v)

1.4. MakeNSIS usage

NSIS installer“ค€ 'MakeNSIS' ํ”„กœทธžจ— ˜ํ•ด„œ NSI script (.NSI) ปดํŒŒํ•จœกœ„œ งŒ“ค–ด„‹ค.
makensis ˜ ‹คํ–‰ ฌธฒ•€ Œ€ฐ• ‹คŒ ฐ™‹ค.

~cpp 
Makensis [/Vx] [/Olog] [/LICENSE] [/PAUSE] [/NOCONFIG] [/CMDHELP [command]] [/HDRINFO] [/CD] [/Ddefine[=value] ...]
         ["/XCommand parameter" ...] [Script.nsi | - [...]]
  • /LICENSE - license page ณด—ฌ€‹ค.
  • /Vx (xŠ” 0~4) - output ˜ ํ‘œ‹œ  •„ กฐ ˆํ•œ‹ค.
    0 : no output
    1 : errors only
    2 : warnings and errors
    3 : info, warnings, and errors
    4 : all output
  • /Olog (log Š” filename) - compile ค‘ screen ƒ— ํ•ด‹ ํ™”— Œ€ํ•œ log ํ‘œ‹œํ•˜Š” Œ€‹  ํ™”กœ „ •ํ•œ‹ค.
  • /PAUSE - Makensis € ข…ฃŒ˜ธฐ  „ ค‘„— ‹œ •€ํ•ด€‹ค. ดŠ” Windows —„œ ง ‘ ‹คํ–‰ํ•  •Œ œ šฉํ•˜‹ค.
  • /NOCONFIG - nsisconfi.nsi „ ํฌํ•จํ•˜€ •ŠŠ”‹ค. ด ํŒŒฉ”ํ„€ —†Š” ฒฝšฐ, ธŠคํ†จŸฌŠ” ธฐณธ œกœ nsisconf.nsi กœ€„ธฐณธ„ •ด „ธํŒ…œ‹ค. (NSIS Configuration File ฐธกฐ)
  • /CMDHELP - command — Œ€ํ•œ ธฐณธ ธ ‚ฌšฉ •ณด ถœ ฅํ•ด€‹ค.

ํ•˜€งŒ ˜ ธฐณธ ˜ต…˜ดƒ ž˜ •ˆ“ฐฒŒ   ฒƒด‹ค. ^^;

1.5. ํšจœจ ธ ฐœฐœž‘—…ํ™˜ฒฝ

NSIS Š” ธŠคํ†จํ•˜ณ  ‚œ ’ค—Š” ˜คฅธชฝ„ํŠ shell-extension — ํ•ด‹ ํ™•žฅž ปดํŒŒด “กœ‹ค. ํ•˜€งŒ command กœ ˆ˜™œกœ ˜ต…˜„ „ •ํ•˜ฉด„œ ž… ฅํ•ดŠ” ฒƒด ” ํŽธํ•˜‹ค.

˜Š” Editplus ˜ ‚ฌšฉž„ตฌทธ— makensis „ “ก‹œœ„œ ‚ฌšฉํ•˜Š” ฐฉฒ•„ žˆฒ ‹ค. (nsis œ„ํ•œ „‹จํ•œ ide งŒ“ค–ด„œ จ–ดณดŠ”ค‘.. ด˜€€งŒ. —‰—‰.. ทธž˜„ editplus € ํ›จ ํŽธํ•˜ธด ํ•˜‹ค. --;)

1.6. .NSI script ธฐณธ ฌธฒ•

NSIS Script File (.nsi) Š” command “ค˜ ฌถŒธ batch-file™€„ ฐ™•„ณดดŠ” text fileด‹ค.
  • ; ‚˜ # œกœ ‹œž‘˜Š” ํ–‰“ค€  „€ comment ด‹ค.
  • ;, # ’ค— ‚˜˜คŠ” ฒƒ ˜ํ•œ comment กœ ทจธ‰œ‹ค.
  • „ด •„‹Œ ํ–‰“ค€ 'command parameter' ˜ ํ˜•ํƒœ ค‹ค.
  • parameter ˜ ˆซž“ค€ 10„ˆ˜, 16„ˆ˜, 8„ˆ˜“ค„ ดšฉํ•  ˆ˜ žˆ‹ค. (ฐ˜ ˆซž, 0x__, 0124 ‹œกœ..)
  • ํ‘œํ˜„ํ•˜ณ žํ•˜Š” string — ณตด žˆœฉด ”ฐ˜ดํ‘œ ดšฉํ•œ‹ค.
    ex)

~cpp 
	MessageBox MB_OK "I'll be happy" ; this one puts a ' inside a string
	MessageBox MB_OK 'And he said to me "Hi there!"' ; this one puts a " inside a string
	MessageBox MB_OK `And he said to me "I'll be fucked!"` ; this one puts both ' and "s inside a string:
  • ํ•˜‚˜˜ command € —ฌŸฌ„„ ดšฉํ•˜Š” ฒฝšฐ '' ‚ฌšฉํ•œ‹ค.

~cpp 
    CreateShortCut "$SMPROGRAMS\NSIS\ZIP2EXE project workspace.lnk" \
                   "$INSTDIR\source\zip2exe\zip2exe.dsw"
    MessageBox MB_YESNO|MB_ICONQUESTION \
               "Remove all files in your NSIS directory? (If you have anything \
you created that you want to keep, click No)" \
                IDNO NoRemoveLabel


1.7. NSI Script Study

NSIS Š” ŠคํฌฆฝํŠธ ธฐฐ˜œกœ ข…˜ ฐฐ˜ํ™” ฐ™œ€กœ, ˜ˆ œœ„˜  ‘„ ํ•˜ฉด ‰ฝฒŒ ดšฉํ•  ˆ˜ žˆ‹ค. NSIS/˜ˆ œ1, NSIS/˜ˆ œ2, NSIS/˜ˆ œ3 “„ „„ํ•˜ณ  †ŒŠค กฐธˆ”ฉ šฉ„— งžฒŒ ˆ˜ •ํ•˜—ฌ ž‘„ํ•˜ฉด ‰ฝฒŒ  ‘ํ•  ˆ˜ žˆ„ ฒƒด‹ค. ˜ฌธด ƒธฐŠ” ช… –ด‚˜ †„(attribute)— Œ€ํ•ด„œŠ” NSIS/Reference ฐธกฐํ•˜ธฐ ฐ”ž€‹ค.

1.8. CHM Document

NSIS ˜ windows installer „ „„ „˜ํ•˜ฉด NSIS.CHM ํ™”ด ฐ™ด žˆ‹ค.

1.9. NSIS —„œ ธŠคํ†จ ค‘ Explorer ฐฝ  „€ ‹ซธฐ

1.10. ํ•ด‹ dll “ค system32 ˜ ”” ‰ํ† ฆฌ— ณต‚ฌํ•ดธฐ

~cpp 
;copy files
File /r `.\tmp\*.*`
;system32 — ณต‚ฌํ•ด„ dll “ค„ ‹จ ณต‚ฌํ•ด€‹ค.
File /r `.\AdditionalDLL\*.dll` 

;move system addtinoal dlls to system folder
Rename "$INSTDIR\MSVCP60.dll" "$SYSDIR\MSVCP60.dll"


1.11. windows ”ฆฐ œ„˜ ฐพ•„˜คธฐ

ดšฉ ˜ˆ : windows ˜ system32 ”” ‰ํ† ฆฌ— dll “ค„ ณต‚ฌํ•ด„ •Œ.

~cpp 
Section "ThisNameIsIgnoredSoWhyBother?" 
  .
  .
  MessageBox MB_OK "$WINDIR"
  MessageBox MB_OK "$SYSDIR"
  ; ณต‚ฌํ•  ํ™”„ ถ”€ํ•˜ธฐ. 
SectionEnd ; section ™„ฃŒ 


1.12. ExecWait

exec กœ ํ•ด‹ ํ”„กœ„Šค ‹คํ–‰ํ•  •Œ ํ•ด‹ ํ”„กœ„Šค€ ฃฝ„ •Œ Œ€ wait.
regsvr32.exe กœ dll „ unregister ํ•œ ‹คŒ—  „ฒด ํด” ‚ญ œํ•  •Œ, regsvr32.exe Š” Exec € •„‹Œ ExecWait กœ ‹คํ–‰ํ•ด–ด• ํ•œ‹ค. (ทธ ‡€ •Šœฉด ํ•ด‹ dll ด unregister ˜ธฐ  „— dll ํ™”ด delete ˜–ด  •ƒ ธ uninstall ด ˜€ •Š„ ˆ˜„ žˆ‹ค.)

1.13. NSIS —„œ ํŠ • Process € ‚ด•„žˆŠ”€ —ฌ€ ํ™•ธ

FindProc Plugin „ „˜ํ•œ‹ค.


‚ฌšฉ ˜ˆ : exec กœ regsvr32.exe ํ˜ธถœ‹œ „™ธฐ ํ˜ธถœด ˜–ด ’ค˜ delete ฌธด ‹คํ–‰œ‹ค. ด ฐฉ€ํ•˜ธฐ œ„ํ•œ ฐฉฒ•œกœ ‹คŒ ฐ™ด ํ•œ‹ค.

~cpp 
  Exec 'regsvr32.exe /u /s "$INSTDIR\COMDLL.dll"'
  waitloop:
    FindProcDLL::FindProc "regsvr32.exe"
    IntCmp $R0 0 waitdone
    Sleep 500
    Goto waitloop
  waitdone:

  Delete "$INSTDIR\*.*"
  RMDir /r "$INSTDIR"


1.14. NSIS —„œ ActiveX Component “กํ•˜ธฐ

http://nsis.sourceforge.net/archive/viewpage.php?pageid=435
~cpp 
;Inside the -Post section
Exec 'regsvr32.exe /s "$INSTDIR\${NAME_OF_MY_DLL}"'

;And Inside the Uninstall Section 
Exec 'regsvr32.exe /s /u "$INSTDIR\${NAME_OF_MY_DLL}"'


1.15. NSIS —„œ uninstall.exe งŒ“คธฐ


ํ•   : 1. 'Uninstall' Section „ งŒ“ ‹ค. 2. WriteInstaller ดšฉํ•ด€‹ค.

~cpp 
;--------------------------------    
;Uninstaller Section  
Section "Uninstall"
   
;Delete Files 
  RMDir /r "$INSTDIR\*.*"    
 
;Remove the installation directory
  RMDir "$INSTDIR"
  
;Delete Start Menu Shortcuts
  Delete "$DESKTOP\${MUI_PRODUCT}.lnk"
  Delete "$SMPROGRAMS\${MUI_PRODUCT}\*.*"
  RmDir  "$SMPROGRAMS\${MUI_PRODUCT}"
  
;Delete Uninstaller And Unistall Registry Entries
  DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${MUI_PRODUCT}"
  DeleteRegKey HKEY_LOCAL_MACHINE
"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}"  
  
SectionEnd

Section ""
.
.
.

; ˆ€ŠคํŠธฆฌ— uninstall ํ”„กœทธžจ …‹ํŒ…ํ•ดŠ” €„
;write uninstall information to the registry
  WriteRegStr HKLM
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}"
"DisplayName" "${MUI_PRODUCT} (remove only)"
  WriteRegStr HKLM
"Software\Microsoft\Windows\CurrentVersion\Uninstall\${MUI_PRODUCT}"
"UninstallString" "$INSTDIR\Uninstall.exe"

; Uninstaller  งŒ“œŠ” €„ 
WriteUninstaller "$INSTDIR\Uninstall.exe"

SectionEnd


2. Thread

--fnwinter ํ˜• ณ งˆ›Œ—ฌ~ NSIS “ฐŠ” •ฆฌ ํ•  ํ•„š”€ žˆ—ˆŠ” ฐ , PS ดงณ „ INNO SETUP ดŠ” ํ”„กœทธžจด žˆ“ š”. ทธฒƒ„ ดœฐฎ€ฐ, ํ•œฒˆ จณด„š”~
ช‡ช‡ œ ํ‹ธฆฌํ‹ฐ ธŠคํ†จŸฌ—„œ InnoSetup “ฐŠ”ข…ข… ณด˜€—ˆŠ”ฐ, ดฒƒ„ ณตงœ˜€ตฐ..~ ทธ‚˜ €‚˜, http://isfd.kaju74.de/index.php?screenshots . „ˆฌด €Œ€‚˜Š”•„ƒ?;; --1002
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:50
Processing time 0.0363 sec