
๐ NSIS ์ค์น ์คํฌ๋ฆฝํธ ๊ณ ๊ธ ๊ธฐ๋ฅ ํ์ฅ ๊ฐ์ด๋
๐งฉ 1๋จ๊ณ: ์ ๊ฑฐ ํ๋ก๊ทธ๋จ ์์ฑ (Uninstaller)
Section "Install"
SetOutPath "$INSTDIR"
File "MyApp.exe"
WriteUninstaller "$INSTDIR\Uninstall.exe"
SectionEnd
Section "Uninstall"
Delete "$INSTDIR\MyApp.exe"
Delete "$INSTDIR\Uninstall.exe"
RMDir "$INSTDIR"
SectionEnd
๐ ์ค์น ๋๋ ํ ๋ฆฌ์ ์ ๊ฑฐ์ฉ ์คํ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ฌ์ฉ์๋ “ํ๋ก๊ทธ๋จ ์ ๊ฑฐ”์์ ์ด ํ์ผ๋ก ์ฑ์ ์ญ์ ํ ์ ์์ด์.
๐งฉ 2๋จ๊ณ: ๋ ์ง์คํธ๋ฆฌ ๋ฑ๋ก
Section "Install"
WriteRegStr HKLM "Software\MyApp" "Install_Dir" "$INSTDIR"
SectionEnd
Section "Uninstall"
DeleteRegKey HKLM "Software\MyApp"
SectionEnd
๐ ์ค์น๋ ์์น๋ ์ค์ ๊ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ๊ณ , ์ ๊ฑฐ ์ ํจ๊ป ์ญ์ ํฉ๋๋ค.
๐ ๊ด๋ฆฌ์ ๊ถํ์ด ํ์ํ๋ฏ๋ก RequestExecutionLevel admin
๊ผญ ์ค์ ํ์ธ์.
๐งฉ 3๋จ๊ณ: ์ค์น ํ ์๋ ์คํ
Section "Install"
Exec "$INSTDIR\MyApp.exe"
SectionEnd
๋๋, ์ค์น ์๋ฃ ํ ์คํ ์ฌ๋ถ๋ฅผ ๋ฌป๋ UI ๊ตฌ์ฑ๋ ๊ฐ๋ฅํด์:
Function .onInstSuccess
MessageBox MB_YESNO "์ค์น๊ฐ ์๋ฃ๋์์ต๋๋ค. MyApp์ ์คํํ ๊น์?" IDYES run
return
run:
Exec "$INSTDIR\MyApp.exe"
FunctionEnd
๐งฉ 4๋จ๊ณ: ์์ํ๋ก๊ทธ๋จ ๋ฑ๋ก (์๋ ์คํ)
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp" "$INSTDIR\MyApp.exe"
์ญ์ ์์๋ ์๋์ฒ๋ผ ์ ๊ฑฐ:
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Run" "MyApp"
๐งฉ 5๋จ๊ณ: ํ๊ฒฝ๋ณ์ ์ถ๊ฐ
System::Call 'Kernel32::GetEnvironmentVariableA(t, .r0, i) i(1024) t("PATH")'
StrCpy $0 "$0;$INSTDIR"
System::Call 'Kernel32::SetEnvironmentVariableA(t, t) i("PATH", r0)'
๐ ์ค์น ๊ฒฝ๋ก๋ฅผ ํ๊ฒฝ๋ณ์ PATH์ ์ถ๊ฐํด CLI์์๋ ์คํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ์ฉ๋์ ๋๋ค.
๐งฉ 6๋จ๊ณ: ํ์ผ ๋ณต์ฌ ๊ตฌ์กฐ ํ์ฅ (์๋ธ ํด๋ ํฌํจ)
SetOutPath "$INSTDIR\bin"
File "bin\MyApp.exe"
SetOutPath "$INSTDIR\config"
File "config\settings.ini"
๋๋ ์ ์ฒด ํด๋ ๊ตฌ์กฐ๋ฅผ ์ ์งํ ์ฑ ํต์งธ๋ก ๋ณต์ฌํ๋ ค๋ฉด:
SetOutPath "$INSTDIR"
File /r "MyApp_Folder\*.*"
๐งฉ 7๋จ๊ณ: ์์ด์ฝ ๋ฑ๋ก (์์ ๋ฉ๋ด, ๋ฐํํ๋ฉด)
CreateShortCut "$DESKTOP\MyApp.lnk" "$INSTDIR\MyApp.exe"
CreateShortCut "$SMPROGRAMS\MyApp\MyApp.lnk" "$INSTDIR\MyApp.exe"
์ ๊ฑฐ ์:
Delete "$DESKTOP\MyApp.lnk"
Delete "$SMPROGRAMS\MyApp\MyApp.lnk"
RMDir "$SMPROGRAMS\MyApp"
๐งฉ 8๋จ๊ณ: ๋ฌด์ธ ์ค์น (Silent Install)
SilentInstall silent
SilentUnInstall silent
๐ ๋ฐฐํฌ ์ ์ฌ์ฉ์ UI ์์ด ์ค์นํ๋ ค๋ฉด, ์ด ์ค์ ์ ๋ช
์ํ๊ฑฐ๋ ๋ช
๋ น์ค์์ /S
์ต์
์ ์ฌ์ฉํ์ธ์.
MyApp_Installer.exe /S
๐งฉ 9๋จ๊ณ: ์ฌ์ฉ์ ์ ์ ๋ณ์ ํ์ฉ
Var INSTALL_TIME
Function .onInit
GetTime $INSTALL_TIME "%Y-%m-%d %H:%M:%S"
FunctionEnd
๐ ๋ก๊น , ๋๋ฒ๊น , ์ฌ์ฉ์ ๋์ ํ์ธ์ฉ ํ์ ๋ฑ์ ๋ค์ํ๊ฒ ์์ฉํ ์ ์์ด์.
๐งฉ 10๋จ๊ณ: ์ค์น ์๋ฃ ํ ์น ํ์ด์ง ์ด๊ธฐ
ExecShell "open" "https://example.com/thank-you"
์ค์น๊ฐ ๋๋ ๋ค ํน์ ์น ํ์ด์ง(์: ๊ณ ๊ฐ์ง์, ํผ๋๋ฐฑ ๋ฑ)๋ก ์ ๋ํ ๋ ์ ์ฉํฉ๋๋ค.
๐ ์ ๋ฆฌ
์ด์ NSIS๋ฅผ ํตํด ๋จ์ํ ์ค์น ํ๋ก๊ทธ๋จ์ ๋์ด์, ์ค๋ฌด์์๋ ๋ฐ๋ก ์ธ ์ ์๋ ํ๋กํ์
๋ํ ์ธ์คํจ๋ฌ๋ฅผ ๋ง๋ค ์ ์๊ฒ ๋์์ด์.
ํ์์ ๋ฐ๋ผ ์ ๊ธฐ๋ฅ๋ค์ ์กฐํฉํด ์ฌ์ฉํ๊ณ , Function
๊ณผ IfFileExists
, ReadRegStr
, MessageBox
๋ฑ์ ํ์ฉํด ๋์ฑ ๋ณต์กํ ์กฐ๊ฑด ๋ถ๊ธฐ๊น์ง ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.