[Update] installer : 既にインストール済みの場合、ファイルを削除して置き換えるように修正
This commit is contained in:
@@ -1,41 +1,60 @@
|
||||
# Modern UI
|
||||
!define PRODUCT_VERSION "1.0.0.0"
|
||||
!define VERSION "1.0.0.0"
|
||||
VIProductVersion "${PRODUCT_VERSION}"
|
||||
VIFileVersion "${VERSION}"
|
||||
VIAddVersionKey "FileVersion" "${VERSION}"
|
||||
VIAddVersionKey "ProductName" "VRCT"
|
||||
VIAddVersionKey "ProductVersion" "${PRODUCT_VERSION}"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright m's software"
|
||||
VIAddVersionKey "FileDescription" "Communication tool with translation & transcription for VRChat"
|
||||
|
||||
; Modern UI
|
||||
!include MUI2.nsh
|
||||
# nsDialogs
|
||||
; nsDialogs
|
||||
!include nsDialogs.nsh
|
||||
# LogicLib
|
||||
; LogicLib
|
||||
!include LogicLib.nsh
|
||||
; FileFunc
|
||||
!include FileFunc.nsh
|
||||
|
||||
!define MUI_ICON "..\img\vrct_logo_mark_black.ico"
|
||||
!define MUI_UNICON "..\img\vrct_logo_mark_black.ico"
|
||||
|
||||
Unicode true
|
||||
# アプリケーション名
|
||||
; アプリケーション名
|
||||
Name "VRCT Setup"
|
||||
# 作成されるインストーラ
|
||||
; 作成されるインストーラ
|
||||
OutFile "VRCT_Setup.exe"
|
||||
|
||||
RequestExecutionLevel admin
|
||||
ShowInstDetails show
|
||||
|
||||
# 圧縮メソッド
|
||||
; 圧縮メソッド
|
||||
SetCompressor lzma
|
||||
# インストールされるディレクトリ
|
||||
; インストールされるディレクトリ
|
||||
InstallDir "$PROGRAMFILES\VRCT"
|
||||
# XPマニフェスト
|
||||
; XPマニフェスト
|
||||
XPStyle on
|
||||
# ページ
|
||||
; ページ
|
||||
!insertmacro MUI_PAGE_WELCOME
|
||||
!insertmacro MUI_PAGE_LICENSE "..\LICENSE"
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
Page custom OptionPage OptionPageLeave
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
# アンインストーラ ページ
|
||||
; アンインストーラ ページ
|
||||
!insertmacro MUI_UNPAGE_WELCOME
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
!insertmacro MUI_UNPAGE_FINISH
|
||||
# 日本語UI
|
||||
; 日本語UI
|
||||
!insertmacro MUI_LANGUAGE "Japanese"
|
||||
# インターフェース 設定
|
||||
; 引数取得マクロ
|
||||
!insertmacro GetParameters
|
||||
!insertmacro GetOptions
|
||||
; インターフェース 設定
|
||||
!define MUI_ABORTWARNING
|
||||
# 変数
|
||||
; 変数
|
||||
Var Checkbox_InstallDocs
|
||||
Var Checkbox_InstallShortcut
|
||||
Var Dialog_Options
|
||||
@@ -43,28 +62,28 @@ Var InstallDocs
|
||||
Var InstallShortcut
|
||||
Var Label_DescriptionOptions
|
||||
|
||||
# 初期化時コールバック
|
||||
; 初期化時コールバック
|
||||
Function .onInit
|
||||
# オプション値を初期化します。
|
||||
; オプション値を初期化します。
|
||||
StrCpy $InstallDocs ${BST_CHECKED}
|
||||
StrCpy $InstallShortcut ${BST_CHECKED}
|
||||
FunctionEnd
|
||||
|
||||
# オプション ページ
|
||||
; オプション ページ
|
||||
Function OptionPage
|
||||
# nsDialogsを作成します。
|
||||
; nsDialogsを作成します。
|
||||
nsDialogs::Create 1018
|
||||
# 作成されたnsDialogsを変数に代入します。
|
||||
; 作成されたnsDialogsを変数に代入します。
|
||||
Pop $Dialog_Options
|
||||
|
||||
${If} $Dialog_Options == error
|
||||
# ダイアログの作成に失敗した場合には終了します。
|
||||
; ダイアログの作成に失敗した場合には終了します。
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
# ラベルを作成します。
|
||||
; ラベルを作成します。
|
||||
${NSD_CreateLabel} 0 0 100% 12u "オプションを選択してください。"
|
||||
# ラベルを変数に代入します。
|
||||
; ラベルを変数に代入します。
|
||||
Pop $Label_DescriptionOptions
|
||||
|
||||
${NSD_CreateCheckbox} 0 13u 100% 12u "ドキュメントをインストールする(&D)"
|
||||
@@ -74,54 +93,91 @@ Function OptionPage
|
||||
Pop $Checkbox_InstallShortcut
|
||||
|
||||
${If} $InstallDocs == ${BST_CHECKED}
|
||||
# チェックが入力済の場合、チェックボックスにチェックを入れます。
|
||||
; チェックが入力済の場合、チェックボックスにチェックを入れます。
|
||||
${NSD_Check} $Checkbox_InstallDocs
|
||||
${EndIf}
|
||||
${If} $InstallShortcut == ${BST_CHECKED}
|
||||
# チェックが入力済の場合、チェックボックスにチェックを入れます。
|
||||
; チェックが入力済の場合、チェックボックスにチェックを入れます。
|
||||
${NSD_Check} $Checkbox_InstallShortcut
|
||||
${EndIf}
|
||||
nsDialogs::Show
|
||||
FunctionEnd
|
||||
|
||||
# オプション ページ退出コールバック
|
||||
; オプション ページ退出コールバック
|
||||
Function OptionPageLeave
|
||||
${NSD_GetState} $Checkbox_InstallDocs $InstallDocs
|
||||
${NSD_GetState} $Checkbox_InstallShortcut $InstallShortcut
|
||||
FunctionEnd
|
||||
|
||||
# デフォルト セクション
|
||||
; デフォルト セクション
|
||||
Section
|
||||
# 出力先を指定します。
|
||||
; If VRCT is already running, display a warning message and exit
|
||||
StrCpy $1 "VRCT.exe"
|
||||
nsProcess::_FindProcess "$1"
|
||||
Pop $R1
|
||||
${If} $R1 = 0
|
||||
nsExec::ExecToStack "taskkill /IM VRCT.exe"
|
||||
${EndIf}
|
||||
|
||||
; ディレクトリを削除
|
||||
RMDir /r "$INSTDIR"
|
||||
; スタート メニューから削除
|
||||
Delete "$SMPROGRAMS\VRCT\VRCT.lnk"
|
||||
RMDir "$SMPROGRAMS\VRCT"
|
||||
; デスクトップ ショートカットを削除
|
||||
Delete "$DESKTOP\VRCT.lnk"
|
||||
; レジストリ キーを削除
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT"
|
||||
|
||||
; 出力先を指定します。
|
||||
SetOutPath "$INSTDIR"
|
||||
# インストールされるファイル
|
||||
; インストールされるファイル
|
||||
File /r "..\dist\VRCT\"
|
||||
|
||||
${If} $InstallDocs == ${BST_CHECKED}
|
||||
# ドキュメントをインストールする場合
|
||||
# 出力先を指定します。
|
||||
; ドキュメントをインストールする場合
|
||||
; 出力先を指定します。
|
||||
SetOutPath "$INSTDIR\docs"
|
||||
# インストールされるファイル
|
||||
; インストールされるファイル
|
||||
File "..\dist\README.txt"
|
||||
${EndIf}
|
||||
|
||||
# アンインストーラを出力
|
||||
; アンインストーラを出力
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
${If} $InstallDocs == ${BST_CHECKED}
|
||||
# デスクトップにショートカットを作成
|
||||
; デスクトップにショートカットを作成
|
||||
CreateShortCut "$DESKTOP\VRCT.lnk" "$INSTDIR\VRCT.exe"
|
||||
${EndIf}
|
||||
|
||||
# スタート メニューにショートカットを登録
|
||||
; スタート メニューにショートカットを登録
|
||||
CreateDirectory "$SMPROGRAMS\VRCT"
|
||||
SetOutPath "$INSTDIR"
|
||||
CreateShortcut "$SMPROGRAMS\VRCT\VRCT.lnk" "$INSTDIR\VRCT.exe" ""
|
||||
# レジストリに登録
|
||||
; レジストリに登録
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT" "DisplayName" "VRCT"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT" "UninstallString" '"$INSTDIR\Uninstall.exe"'
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT" "DisplayIcon" '"$INSTDIR\_internal\img\vrct_logo_mark_black.ico"'
|
||||
SectionEnd
|
||||
|
||||
# アンインストーラ
|
||||
!include Uninstall.nsi
|
||||
; アンインストーラ
|
||||
Section Uninstall
|
||||
; If VRCT is already running, display a warning message and exit
|
||||
StrCpy $1 "VRCT.exe"
|
||||
nsProcess::_FindProcess "$1"
|
||||
Pop $R1
|
||||
${If} $R1 = 0
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "VRCT is still running. Cannot uninstall this software.$\nPlease close VRCT and try again." /SD IDOK
|
||||
Abort
|
||||
${EndIf}
|
||||
; ディレクトリを削除
|
||||
RMDir /r "$INSTDIR"
|
||||
RMDir /r "$LOCALAPPDATA\VRCT"
|
||||
; スタート メニューから削除
|
||||
Delete "$SMPROGRAMS\VRCT\VRCT.lnk"
|
||||
RMDir "$SMPROGRAMS\VRCT"
|
||||
; デスクトップ ショートカットを削除
|
||||
Delete "$DESKTOP\VRCT.lnk"
|
||||
; レジストリ キーを削除
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT"
|
||||
SectionEnd
|
||||
@@ -1,16 +0,0 @@
|
||||
# アンインストーラ
|
||||
Section "Uninstall"
|
||||
# アンインストーラを削除
|
||||
# Delete "$INSTDIR\Uninstall.exe"
|
||||
# ファイルを削除
|
||||
# Delete "$INSTDIR\VRCT.exe"
|
||||
# ディレクトリを削除
|
||||
RMDir /r "$INSTDIR"
|
||||
# スタート メニューから削除
|
||||
Delete "$SMPROGRAMS\VRCT\VRCT.lnk"
|
||||
RMDir "$SMPROGRAMS\VRCT"
|
||||
# デスクトップ ショートカットを削除
|
||||
Delete "$DESKTOP\VRCT.lnk"
|
||||
# レジストリ キーを削除
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT"
|
||||
SectionEnd
|
||||
Reference in New Issue
Block a user