ここのことはなかったことにするかもしれない

仕事がらみの記事を主として扱いますが、あくまで個人ブログです。2013年以前の記事は https://yellow-73.hatenablog.com/ にあります。

作ったアプリケーションをインストールしたら日本語が出なくて焦った

標記の通り。

Visual Studio 2017でアプリっぽいものを開発していて、デフォルトロケールでは英語を使用し、日本語ローケールで日本語を使うようにしていました。

インストーラプロジェクトを導入して、とりあえず「プライマリ出力」をインストールするようにしたたところ、多言語化したアプリがデフォルトロケールで表示されてしまいました。

全然意味が分からなかったので、半日悩んでいたのですが、それでも分かりませんでした。
ここで、exeファイルのインストール先に移動して、C#プロジェクトで生成されたリソースを入れてみたらどうだろうと思いました。

C#プロジェクトのbin/Releaseを見ると、jaディレクトリが作られ、その下に fooba.resources.dll があります。このjaディレクトリごとexeファイルのインストール先にコピーしました。

実行したところ、日本語が表示されました。

ということは、インストーラプロジェクトで生成されたインストーラが日本語リソースをインストールしてくれたら解決するようです。また、デフォルトロケールのリソースが無いところから、exeか何かに取り込まれているようです。

で、"installer project resource language"でぐぐったところ、
https://stackoverflow.com/questions/798886/c-sharp-creating-a-setup-for-multi-language
がヒット。

プロジェクト出力で、リソースのアセンブリを追加してやればいいとのこと。

プライマリ出力と同じ要領で、インストーラプロジェクトを右クリックでコンテキストメニューを出し、"Add"→「プロジェクト出力」を選択。
何を出力するか選択するところで、2行目に「ローカライズされたリソース」があり、たぶんこれだな、と考える。

追加すると、「ローカライズされたリソース from (プロジェクト名)」が確かに追加されます。
これでビルド、インストールすると、インストールされたアプリで日本語表示ができました。また、exeファイルのインストール先を確認して、リソースがインストールされていたことも確認できました。