# [NsisTest20] 用NSISファイル 作成日:2014年02月22日 !include MUI2.nsh # Modern UI をインクルードする !define EXEFILE "NsisTest20.exe" # インストール対象実行ファイル名 !define PROGICON "NsisTest.ico" # アイコンファイル名 !define AUTHOR "Clikington" # 制作者名 !define NAME "NsisTest20" # ProductName !define PACKAGE "${NAME}" # パッケージ名 Name "${PACKAGE}" # インストーラーの名前を設定する OutFile "SetupNsisTest20.exe" # 出力ファイル名を指定する !define SUBKEY "Software\VB and VBA Program Settings\${AUTHOR}\${NAME}" !define REGITEM "Install" InstallDirRegKey HKLM "SOFTWARE\${PACKAGE}" "" # HKLM:HKEY_LOCAL_MACHINE RequestExecutionLevel user # 実行権限指定 # インストーラーの見た目の設定をする !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" !define MUI_HEADERIMAGE !define MUI_HEADERIMAGE_RIGHT !define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-r.bmp" !define MUI_HEADERIMAGE_UNBITMAP "${NSISDIR}\Contrib\Graphics\Header\orange-uninstall-r.bmp" !define MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange.bmp" !define MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\orange-uninstall.bmp" !define MUI_ABORTWARNING # インストールを中断するときに警告を出す # インストールのページ設定 !insertmacro MUI_PAGE_WELCOME # ようこそページ !insertmacro MUI_PAGE_DIRECTORY # インストール先フォルダ指定ページ !insertmacro MUI_PAGE_INSTFILES # インストール中ページ !insertmacro MUI_PAGE_FINISH # 完了ページ # アンインストールのページ設定 !insertmacro MUI_UNPAGE_WELCOME # ようこそページ !insertmacro MUI_UNPAGE_CONFIRM # アンインストール確認ページ !insertmacro MUI_UNPAGE_INSTFILES # アンインストール中ページ !insertmacro MUI_UNPAGE_FINISH # 完了ページ # 言語設定 !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Japanese" # インストール処理の記述 Section SectionIn RO # インストール先フォルダー設定 # $INSTDIRは[.onInit]関数で取得する SetOutPath $INSTDIR File "C:\Program\NsisTest20\NsisTest20\bin\Release\NsisTest.ico" File "C:\Program\NsisTest20\NsisTest20\bin\Release\NsisTest20.exe" File "C:\Program\NsisTest20\NsisTest20\bin\Release\Test1.dll" SetOutPath "$INSTDIR\csv" SetOutPath "$INSTDIR\csv\10" File "C:\Program\NsisTest20\NsisTest20\bin\Release\Files\csv\10\file_101.csv" File "C:\Program\NsisTest20\NsisTest20\bin\Release\Files\csv\10\file_102.csv" File "C:\Program\NsisTest20\NsisTest20\bin\Release\Files\csv\10\file_103.csv" SetOutPath "$INSTDIR\csv\12" File "C:\Program\NsisTest20\NsisTest20\bin\Release\Files\csv\12\file121.csv" SetOutPath "$INSTDIR\temp" # スタートメニューの設定 SetShellVarContext current CreateDirectory "$SMPROGRAMS\${PACKAGE}" CreateShortCut "$SMPROGRAMS\${PACKAGE}\${NAME}.lnk" "$INSTDIR\${EXEFILE}" "" "$INSTDIR\${PROGICON}" 0 CreateShortCut "$SMPROGRAMS\${PACKAGE}\Uninstall.lnk" "$INSTDIR\uninstall.exe" # デスクトップショートカットの設定 CreateShortCut "$DESKTOP\${NAME}.lnk" "$INSTDIR\${EXEFILE}" "" "$INSTDIR\${PROGICON}" 0 # アンインストーラの登録と作成 WriteUninstaller "uninstall.exe" # Registryへの書き込み WriteRegStr HKCU "${SUBKEY}" "${REGITEM}" "Installed" SectionEnd # アンインストール処理の記述 Section Uninstall DeleteRegKey HKCU "${SUBKEY}" Delete "$DESKTOP\${NAME}.lnk" RMDir /r "$INSTDIR" SetShellVarContext current RMDir /r "$SMPROGRAMS\${PACKAGE}" SectionEnd Function .onInit # 重複インストール防止のチェック Call CheckInstalled # インストールフォルダーの設定 Push $0 StrCpy $0 $PROGRAMFILES 2 StrCpy $INSTDIR "$0\${AUTHOR}\${PACKAGE}" # .NET Frameworkの確認 Call IsdotNet45Installed FunctionEnd Function CheckInstalled ReadRegStr $R0 HKCU "${SUBKEY}" "${REGITEM}" StrCmp $R0 "" goAhead stopInstall stopInstall: MessageBox MB_OK "このソフトウエアは既にインストールされています。" Abort goAhead: ; OK の場合 FunctionEnd Function IsDotNet45Installed ReadRegStr $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install" StrCmp $1 "" noDotNet yesDotNet1 yesDotNet1: ReadRegStr $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Version" StrCpy $2 $1 3 StrCmp $2 "4.5" yesDotNet noDotNet noDotNet: MessageBox MB_OK "このパソコンには、.NET Framework 4.5 がインストールされていません。" Abort yesDotNet: ; OK の場合 FunctionEnd