-
Notifications
You must be signed in to change notification settings - Fork 309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
VVPPアンインストール時とディレクトリ見つからない時のエラーハンドリング追加 #1047
The head ref may contain hidden characters: "VVPP\u30A2\u30F3\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6642\u3068\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u898B\u3064\u304B\u3089\u306A\u3044\u6642\u306E\u3048\u3089\u30FC\u30CF\u30F3\u30C9\u30EA\u30F3\u30B0\u8FFD\u52A0"
Changes from 3 commits
e09271f
5f63b41
9f871a7
e9ea75a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -803,50 +803,67 @@ function openEngineDirectory(engineId: string) { | |
|
||
const engineDirectory = engineInfo.path; | ||
if (engineDirectory == null) { | ||
return; | ||
throw new Error(`engineDirectory is null: engineId == ${engineId}`); | ||
} | ||
|
||
// Windows環境だとスラッシュ区切りのパスが動かない。 | ||
// path.resolveはWindowsだけバックスラッシュ区切りにしてくれるため、path.resolveを挟む。 | ||
shell.openPath(path.resolve(engineDirectory)); | ||
} | ||
|
||
/** | ||
* VVPPエンジンをインストールする。 | ||
*/ | ||
async function installVvppEngine(vvppPath: string) { | ||
try { | ||
await vvppManager.install(vvppPath); | ||
return true; | ||
} catch (e) { | ||
dialog.showErrorBox( | ||
"読み込みエラー", | ||
`${vvppPath} を読み込めませんでした。` | ||
"インストールエラー", | ||
`${vvppPath} をインストールできませんでした。` | ||
); | ||
log.error(`Failed to load ${vvppPath}, ${e}`); | ||
log.error(`Failed to install ${vvppPath}, ${e}`); | ||
return false; | ||
} | ||
} | ||
|
||
/** | ||
* VVPPエンジンをアンインストールする。 | ||
* 関数を呼んだタイミングでアンインストール処理を途中まで行い、アプリ終了時に完遂する。 | ||
*/ | ||
async function uninstallVvppEngine(engineId: string) { | ||
const engineInfos = fetchEngineInfos(); | ||
const engineInfo = engineInfos.find( | ||
(engineInfo) => engineInfo.uuid === engineId | ||
); | ||
if (!engineInfo) { | ||
throw new Error(`No such engineInfo registered: engineId == ${engineId}`); | ||
} | ||
try { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
if (!engineInfo) { | ||
throw new Error(`No such engineInfo registered: engineId == ${engineId}`); | ||
} | ||
|
||
if (engineInfo.type !== "vvpp") { | ||
throw new Error(`engineInfo.type is not vvpp: engineId == ${engineId}`); | ||
} | ||
if (engineInfo.type !== "vvpp") { | ||
throw new Error(`engineInfo.type is not vvpp: engineId == ${engineId}`); | ||
} | ||
|
||
const engineDirectory = engineInfo.path; | ||
if (engineDirectory == null) { | ||
throw new Error("engineDirectory == null"); | ||
} | ||
const engineDirectory = engineInfo.path; | ||
if (engineDirectory == null) { | ||
throw new Error("engineDirectory == null"); | ||
} | ||
|
||
// Windows環境だとエンジンを終了してから削除する必要がある。 | ||
// そのため、アプリの終了時に削除するようにする。 | ||
vvppManager.markWillDelete(engineId); | ||
return true; | ||
// Windows環境だとエンジンを終了してから削除する必要がある。 | ||
// そのため、アプリの終了時に削除するようにする。 | ||
vvppManager.markWillDelete(engineId); | ||
return true; | ||
} catch (e) { | ||
const engineName = engineInfo?.name ?? engineId; | ||
dialog.showErrorBox( | ||
"アンインストールエラー", | ||
`${engineName} をアンインストールできませんでした。` | ||
); | ||
log.error(`Failed to uninstall ${engineId}, ${e}`); | ||
return false; | ||
Hiroshiba marked this conversation as resolved.
Show resolved
Hide resolved
|
||
} | ||
} | ||
|
||
// ディレクトリがエンジンとして正しいかどうかを判定する | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -492,7 +492,6 @@ export default defineComponent({ | |
"addingEngine", | ||
store.dispatch("INSTALL_VVPP_ENGINE", vvppFilePath.value) | ||
); | ||
uiLockedState.value = null; | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 不要な処理だったのでついでに消去 |
||
if (success) { | ||
requireRestart( | ||
"エンジンを追加しました。反映には再起動が必要です。今すぐ再起動しますか?" | ||
|
@@ -531,15 +530,18 @@ export default defineComponent({ | |
); | ||
break; | ||
} | ||
case "vvpp": | ||
await lockUi( | ||
case "vvpp": { | ||
const success = await lockUi( | ||
"deletingEngine", | ||
store.dispatch("UNINSTALL_VVPP_ENGINE", selectedId.value) | ||
); | ||
requireRestart( | ||
"エンジンの削除には再起動が必要です。今すぐ再起動しますか?" | ||
); | ||
if (success) { | ||
requireRestart( | ||
"エンジンの削除には再起動が必要です。今すぐ再起動しますか?" | ||
); | ||
} | ||
break; | ||
} | ||
default: | ||
throw new Error("assert engineInfos[selectedId.value].type"); | ||
} | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
uninstallVvppEngineにドキュメントコメント書いてみました。