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.0268 sec