VM をビルドせずに Windows 10 版のPharo を日本語のディレクトリ名を含んだフォルダから起動させる件

タイトル長い

前回の記事を書いた後にコメントをもらって、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 作りのトレンドがわからず浦島さんになってしまうのでよしとする。