Skip to content
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

製品版でカレントディレクトリを.exeの場所にしてるけど、カレントディレクトリは変えないべきかも? #2568

Open
Hiroshiba opened this issue Feb 26, 2025 · 3 comments · May be fixed by #2570
Labels
機能向上 要議論 実行する前に議論が必要そうなもの

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Feb 26, 2025

内容

electronは製品版のみ、カレントディレクトリをアプリの場所に変えてます。

process.chdir(appDirPath);

そもそもカレントディレクトリは変えないほうが本当は良いはず。
例えばvoicevox.exeをCLIで起動して、相対パスでプロジェクトファイルを指定したときなどにうまく動かないので。
ただそれをしたい機会が無視できるほど少ないから、理由があるならカレントディレクトリを移動しても良さそう。

Pros 良くなる点

直感的になる

Cons 悪くなる点

カレントディレクトリを変えなくても問題なく動くコードにしないといけない

実現方法

製品版でカレントディレクトリ=.exeの場所としたロジックが書かれてるのは、おそらくデフォルトエンジンの実行パスを決めるときだけ(本当???)
実際カレントディレクトリを変更するロジックが導入されたのはこのときで、導入理由はおそらくこれ。
cwdがインストールディレクトリにならず、エンジン起動時にENOENTを吐いていたのを修正(Firefoxのダウンロードタブから直で開くと、cwdがダウンロードフォルダになる?)

実際.env.productionに書いてるデフォルトエンジンのパスはvv-engine/run.exeで相対パス。
そのパスの解決はカレントディレクトリからになってるので、カレントディレクトリの変更が必要になってる。

これはたぶん、カレントディレクトリを変えるのではなく、.envのパス指定でアプリディレクトリを指定可能にするのが良い気がする。
例えば{APP_DIR}/vv-engine/run.exeと指定して{APP_DIR}をリプレイスするとかで。

あるいはもう普通にデフォルトエンジンパス(=voicevox.exeのパス)からのパスとして解決しちゃう仕様でもそんなに問題なさそう。

その他

かなり細かいことなのでそんな気にしなくても良い気がしますが、ちょっと考えてしまったのでとりあえず出力ということでissue作ってみました。。

ちなみに7zip.exeのパス指定も製品版のみ相対パス指定なのですが、こっちはちゃんとアプリのパスで解決してました。

sevenZipPath = path.join(path.dirname(app.getPath("exe")), sevenZipPath);

@Hiroshiba
Copy link
Member Author

@sabonerune
いつもすみません!!
製品版.exe実行時、.exeの場所をカレントディレクトリに変えないことによるバグってなにか思いついたりされますか・・・? 👀

@sevenc-nanashi
カレントディレクトリを.exeの場所にしないこの案、そうすべきかすべきじゃないか意見あれば聞きたみです・・・!

@sabonerune
Copy link
Contributor

@Hiroshiba 自分が考える限りはとくに思いつきません。

@sevenc-nanashi
Copy link
Member

変える理由も変えない理由も特にないって気持ちです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
機能向上 要議論 実行する前に議論が必要そうなもの
Projects
None yet
3 participants