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

CPU版のelectron-storeの保存先がvoicevox-cpuなのをGPU版と合わせたい #337

Closed
Hiroshiba opened this issue Oct 10, 2021 · 10 comments · Fixed by #1005
Closed

Comments

@Hiroshiba
Copy link
Member

内容

CPU版の自動ビルドは問題なく稼働していそうでした!

(2021/10/11 0:28現在ミスがあって再ビルド中ですが、こちらです↓)
https://github.com/Hiroshiba/yukarin-tts-software/actions/runs/1326080659

CPU版を動かしてみると、electron-storeなどの保存先が%appdata%/voicevox-cpuでした。
こちらをGPU版に合わせてVOICEVOXにしておくと、将来的に対応などが簡単になるかなと思いました。

Pros 良くなる点

Cons 悪くなる点

実現方法

VOICEVOXのバージョン

0.7.2

OSの種類/ディストリ/バージョン

その他

CPU版の自動ビルドをするプルリクエストが参考になるかもです https://github.com/Hiroshiba/voicevox/pull/306

@aoirint 実現可能そうでしょうか 👀

@aoirint
Copy link
Member

aoirint commented Oct 11, 2021

Electron Storeの保存先を直接変更する方法があるかもしれませんが、
そもそもの原因は、package.jsonnamepackageName) を書き換えていることと思いました。
これは、GitHub Releaseにアップロードする7zファイルの名前を重複させないために書き換えています。

レジストリにインストール情報が書き込まれていそうですが、そちらでも同じこと(別々に記録)が起きているかもしれないと思いました(こちらはappIdかもです)。

7zファイルの名前以外への影響を抑えるには、packageNameを変更しない方法で、7zファイルの名前を変更するのがいいのかなと思いました。

Electron Builderの他のオプションで7zファイルの名前を書き換える方法があればいいのですが、
以下のようにロジックを追うと、結合済みの7zファイルの名前をpackageNameを介さずに変更するには、
Electron Builderを書き換える必要がありそうに思いました。

@aoirint
Copy link
Member

aoirint commented Oct 11, 2021

別の方法として、結合済みの7zファイルの名前を変えることをあきらめて、
分割後の7zファイルの名前だけを変える方法はあると思います(#306 の回避方法2)。
build/splitNsisArchive.7zbuild/installer.nshに変更を加える形です。

結合済みの7zファイルの名前は、インストーラに埋め込まれているようなので、ビルド後にリネームすることができませんが、
分割後の7zファイルであれば、build/installer.nshで結合後の名前を合わせれば、自由に名前を付けられるように思います。

結合済み・分割後で7zファイルの名前をそろえた方が取り扱いやすいとは思っていますが、基本的に表に出ないもので、またリネームできない制約があるので、仕方ないのかなと思いました。

0.7.2時点のCPU版の7zファイル名

  • 結合済み(ビルド成果物): voicevox-cpu-0.7.2-x64.nsis.7z
  • 分割後(アップロード): voicevox-cpu-0.7.2-x64.nsis.7z.1

回避方法2を適用した場合の7zファイル名

  • 結合済み(ビルド成果物): voicevox-0.7.2-x64.nsis.7z
  • 分割後(アップロード): voicevox-cpu-0.7.2-x64.nsis.7z.1

@Hiroshiba
Copy link
Member Author

なるほどです! たしかにレジストリの情報も別々になっているかもしれません。

詳細ありがとうございます。
分割後の7zファイルをリネームするのが良さそうに感じました!!

@Hiroshiba
Copy link
Member Author

ユーザーデータのディレクトリを、起動後に修正する方法もありそうです。
こちらで手軽に解決してしまう手もありそうです

@Hiroshiba
Copy link
Member Author

結構声が聞こえてくるので、早めに修正しておくと将来の悲劇を救えるかも。優先度を1段階上げたいと思います。
https://twitter.com/unyassu_nnn/status/1585224875786276865

@sabonerune
Copy link
Contributor

一通り調べてみました。
Electronのアプリケーションの名前をコード内でvoievoxに変更してしまうのが一番楽な気がします。
https://www.electronjs.org/ja/docs/latest/api/app#appsetnamename

また、調査中にelectron-logがElectronのuserDatalogsの場所を無視しているため開発版のログが製品版のログと混ざっていることが分かりました。
別途electron-log側で設定をすれば解決します。
https://github.com/megahertz/electron-log/blob/master/docs/file.md#resolvepath-variables-pathvariables-message-logmessage--string

その他、デフォルトのログの保存場所が必ず作成されてしまうelectron-logの既知の問題があります。

@Hiroshiba
Copy link
Member Author

調査ありがとうございます!!!
アプリ内でアプリ名を設定すれば良いというのは盲点でした、良いと思います!!!

electron-logのパス指定方法もなるほどです。とても助かります。
デフォルトのログディレクトリが作られてしまう件はまあ一旦仕方ないかなという気持ちです!

@sabonerune
Copy link
Contributor

すみません、このコード何に使っているか分かりますか?

voicevox/src/background.ts

Lines 1025 to 1032 in 1d1d7f6

ipcMainHandle("GET_APP_INFOS", () => {
const name = app.getName();
const version = app.getVersion();
return {
name,
version,
};
});

@Hiroshiba
Copy link
Member Author

@sabonerune getAppInfosでコード内検索すると結構色々出てきました。ヘルプダイアログとか。

@sabonerune
Copy link
Contributor

ありがとうございます。
GET_APP_INFOSで検索していました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants