👍[Update] Model : Add Installer
This commit is contained in:
15
config.py
15
config.py
@@ -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
108
installer/Install.nsi
Normal 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
14
installer/Uninstall.nsi
Normal 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
|
||||
4
model.py
4
model.py
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user