タイトル長い
前回の記事を書いた後にコメントをもらって、manifestを追加すれば良いということがわかった。manifest でアプリごとに codepage を指定して起動できるらしい。
Use UTF-8 code pages in Windows apps
Windows のシステム設定で一括変更する方法しか知らなかったので朗報。
さっそく自宅にあった mouse e10 で試してみたらちゃんと動いたので変更点を述べる。
もともと Pharo の vm フォルダには Pharo.exe.manifest があるのだが、codepage は指定されてないのでその部分を追記する。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0"
xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="*"
name="www.pharo.org.VM"
type="win32"
/>
<description>Pharo Smalltalk Virtual Machine</description>
<asmv3:application>
<asmv3:windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</asmv3:windowsSettings>
</asmv3:application>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<application>
<windowsSettings>
<activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
</windowsSettings>
</application>
</assembly>
末尾の方の application タグで囲んでいる太字の部分を挿入した。これで起動すれば日本語を含んだフォルダがパスに含まれていても問題なく起動できる。
VM ビルドの苦労は何だったのかと思うが、数年に1度はやっておかないと VM 作りのトレンドがわからず浦島さんになってしまうのでよしとする。