👍[Update] Model : Add Installer

This commit is contained in:
misyaguziya
2023-10-25 22:45:28 +09:00
parent 0ac41060ac
commit fc8b8ac5ee
4 changed files with 138 additions and 3 deletions

View File

@@ -1,6 +1,8 @@
import sys
import inspect
from os import path as os_path
from os import getenv as os_getenv
from os import makedirs as os_makedirs
from json import load as json_load
from json import dump as json_dump
import tkinter as tk
@@ -39,10 +41,18 @@ class Config:
def VERSION(self):
return self._VERSION
@property
def LOCAL_PATH(self):
return self._LOCAL_PATH
@property
def PATH_CONFIG(self):
return self._PATH_CONFIG
@property
def PATH_LOGS(self):
return self._PATH_LOGS
@property
def GITHUB_URL(self):
return self._GITHUB_URL
@@ -520,7 +530,10 @@ class Config:
def init_config(self):
# Read Only
self._VERSION = "2.0.0"
self._PATH_CONFIG = os_path.join(os_path.dirname(sys.argv[0]), "config.json")
self._LOCAL_PATH = os_path.join(os_getenv('LOCALAPPDATA'), "VRCT")
self._PATH_CONFIG = os_path.join(self._LOCAL_PATH, "config.json")
self._PATH_LOGS = os_path.join(self._LOCAL_PATH, "logs")
os_makedirs(self._LOCAL_PATH, exist_ok=True)
self._GITHUB_URL = "https://api.github.com/repos/misyaguziya/VRCT/releases/latest"
self._BOOTH_URL = "https://misyaguziya.booth.pm/"
self._DOCUMENTS_URL = "https://mzsoftware.notion.site/VRCT-Documents-be79b7a165f64442ad8f326d86c22246"

108
installer/Install.nsi Normal file
View File

@@ -0,0 +1,108 @@
# Modern UI
!include MUI2.nsh
# nsDialogs
!include nsDialogs.nsh
# LogicLib
!include LogicLib.nsh
# アプリケーション名
Name "VRCT Setup"
# 作成されるインストーラ
OutFile "VRCT_Setup.exe"
RequestExecutionLevel admin
ShowInstDetails show
# 圧縮メソッド
SetCompressor lzma
# インストールされるディレクトリ
InstallDir "$PROGRAMFILES\VRCT"
# XPマニフェスト
XPStyle on
# ページ
!insertmacro MUI_PAGE_WELCOME
!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
!insertmacro MUI_LANGUAGE "Japanese"
# インターフェース 設定
!define MUI_ABORTWARNING
# 変数
Var Checkbox_InstallDocs
Var Dialog_Options
Var InstallDocs
Var Label_DescriptionOptions
# 初期化時コールバック
Function .onInit
# オプション値を初期化します。
StrCpy $InstallDocs ${BST_CHECKED}
FunctionEnd
# オプション ページ
Function OptionPage
# nsDialogsを作成します。
nsDialogs::Create 1018
# 作成された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)"
Pop $Checkbox_InstallDocs
${If} $InstallDocs == ${BST_CHECKED}
# チェックが入力済の場合、チェックボックスにチェックを入れます。
${NSD_Check} $Checkbox_InstallDocs
${EndIf}
nsDialogs::Show
FunctionEnd
# オプション ページ退出コールバック
Function OptionPageLeave
${NSD_GetState} $Checkbox_InstallDocs $InstallDocs
FunctionEnd
# デフォルト セクション
Section
# 出力先を指定します。
SetOutPath "$INSTDIR"
# インストールされるファイル
File "..\dist\VRCT.exe"
${If} $InstallDocs == ${BST_CHECKED}
# ドキュメントをインストールする場合
# 出力先を指定します。
SetOutPath "$INSTDIR\docs"
# インストールされるファイル
File "..\dist\README.txt"
${EndIf}
# アンインストーラを出力
WriteUninstaller "$INSTDIR\Uninstall.exe"
# スタート メニューにショートカットを登録
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"'
SectionEnd
# アンインストーラ
!include Uninstall.nsi

14
installer/Uninstall.nsi Normal file
View File

@@ -0,0 +1,14 @@
# アンインストーラ
Section "Uninstall"
# アンインストーラを削除
Delete "$INSTDIR\Uninstall.exe"
# ファイルを削除
Delete "$INSTDIR\VRCT.exe"
# ディレクトリを削除
RMDir /r "$INSTDIR"
# スタート メニューから削除
Delete "$SMPROGRAMS\VRCT\VRCT.lnk"
RMDir "$SMPROGRAMS\VRCT"
# レジストリ キーを削除
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\VRCT"
SectionEnd

View File

@@ -91,10 +91,10 @@ class Model:
return result
def startLogger(self):
os_makedirs(os_path.join(os_path.dirname(sys.argv[0]), "logs"), exist_ok=True)
os_makedirs(config.PATH_LOGS, exist_ok=True)
logger = getLogger()
logger.setLevel(INFO)
file_name = os_path.join(os_path.dirname(sys.argv[0]), "logs", f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log")
file_name = os_path.join(config.PATH_LOGS, f"{datetime.now().strftime('%Y-%m-%d_%H-%M-%S')}.log")
file_handler = FileHandler(file_name, encoding="utf-8", delay=True)
formatter = Formatter("[%(asctime)s] %(message)s")
file_handler.setFormatter(formatter)