まずは、Jw_cad v7.11 を CrossOver Mac にインストールした場合の話
Jw_cad v7.11 は、CrossOver Mac のアプリケーションリストに登録されているので、Jw_cad v7.11 を選択してインストールするだけで、以下の依存ソフトも同時にインストールされます。- Microsoft Visual C++ 6.0(再頒布可能)
- 梅フォントパッケージ
(1)
Starting '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin/wineloader' 'winewrapper.exe' '--no-quotes' '--desktop' 'root' '--run' '--'
'/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib/wine/rundll32.exe.so' 'setupapi.dll,InstallHinfSection' 'DefaultInstall' '128' '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/share/crossover/bottle_data/crossover.inf'
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:mscoree:LoadLibraryShim error reading registry key for installroot
'/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib/wine/rundll32.exe.so' 'setupapi.dll,InstallHinfSection' 'DefaultInstall' '128' '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/share/crossover/bottle_data/crossover.inf'
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:mscoree:LoadLibraryShim error reading registry key for installroot
これらは、CrossOver の Windows 環境を構築している時のエラーのようです。
(2)
Starting '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin/wineloader' 'winewrapper.exe' '--new-console' '--wait-children' '--no-convert' '--run' '--'
'C:\users\crossover\Temp\tmpNwQBna\vcredist.exe'
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\comcat.dll" -> "C:\\windows\\system32\\comcat.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\oleaut32.dll" -> "C:\\windows\\system32\\oleaut32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\olepro32.dll" -> "C:\\windows\\system32\\olepro32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\stdole2.tlb" -> "C:\\windows\\system32\\stdole2.tlb"
err:cxreboot:Execute_CommandList FAILED to delete key L"iernonce" with error 2
err:cxreboot:Execute_CommandList FAILED to delete key L"dxdllreg" with error 2
'C:\users\crossover\Temp\tmpNwQBna\vcredist.exe'
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\comcat.dll" -> "C:\\windows\\system32\\comcat.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\oleaut32.dll" -> "C:\\windows\\system32\\oleaut32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\olepro32.dll" -> "C:\\windows\\system32\\olepro32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\stdole2.tlb" -> "C:\\windows\\system32\\stdole2.tlb"
err:cxreboot:Execute_CommandList FAILED to delete key L"iernonce" with error 2
err:cxreboot:Execute_CommandList FAILED to delete key L"dxdllreg" with error 2
これらは、Visual C++ 6.0 ランタイムライブラリ環境を構築している時のエラーのようです。
Jw_cad v7.11 アプリ自体のインストールエラーはありません。
上記エラーから OLE 関連のライブラリなどで、まだ Wine の実装が不足しているところがあるのだと思われます。
それでも Jw_cad 7.11 の CrossOver Mac での評価の Rate は星4つで、Jw_cad v7.11 の基本機能はまずまず動くということです。
ちなみに、星4つで「問題なく実行」という評価レベルです。Rate の詳細は以下を参照。
https://www.codeweavers.com/compatibility/rating-system
星なし 未検証(Unknown or Unrated)
星1つ インストールしない(Will Not Install)
星2つ インストール可能、ただし動作しない(Installs, Will Not Run)
星3つ 使用可能な機能の制限(Limited Functionality)
星4つ 問題なく実行(Runs Well)
星5つ 全く問題なく実行(Runs Great)
星1つ インストールしない(Will Not Install)
星2つ インストール可能、ただし動作しない(Installs, Will Not Run)
星3つ 使用可能な機能の制限(Limited Functionality)
星4つ 問題なく実行(Runs Well)
星5つ 全く問題なく実行(Runs Great)
Jw_cad v8.03a のみを CrossOver にインストールした場合のエラーその1
CrossOver Mac で、ボトルを Windows7 にして、Jw_cad v8.03a のみをインストールしたときのインストールログを確認してみます。以下のエラーがログ出力されます。
Starting '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin/wineloader' 'winewrapper.exe' '--no-quotes' '--desktop' 'root' '--run' '--'
'/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib/wine/rundll32.exe.so' 'setupapi.dll,InstallHinfSection' 'Win8Install' '128' '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/share/crossover/bottle_data/crossover.inf'
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:mscoree:LoadLibraryShim error reading registry key for install root
'/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/lib/wine/rundll32.exe.so' 'setupapi.dll,InstallHinfSection' 'Win8Install' '128' '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/share/crossover/bottle_data/crossover.inf'
err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
err:ole:get_local_server_stream Failed: 80004002
err:mscoree:LoadLibraryShim error reading registry key for install root
これらは、Jw_cad v7.11 をインストールした場合と同等のエラーです。なので、Jw_cad v8.03a でも特に気にする必要のないエラーであると判断しました。
ちなみに、Windows 7 の実環境で、レジストリを検索すると、
00000131-0000-0000-c000-000000000046 は IRemUnknown
6d5140c1-7436-11ce-8034-00aa006009fa は IServiceProvider
としてレジストリに登録されています。
一方、CrossOver Mac の Windows 7用ボトル環境で、レジストリを検索すると、同様に値が登録されていました。
ぼくは Windows プログラミングのお作法には詳しくないので、これ以上ソースコードの確認はしませんが、上記 ole 関連のエラーは、レジストリに登録されている「00000131-0000-0000-c000-000000000046」や「6d5140c1-7436-11ce-8034-00aa006009fa」などの CLSID に対して、IPSFactory buffer が獲得できないというエラーなのでしょう。
とにかく、本エラーは、ole32.dll に対する Wine 側の実装が待ちということにします。
ちなみにですが、試しに、Windows 7 の実環境から ole 関連の dll を持ってきて CrossOver に読み込ませてみたところ、エラーが発生して、以降該当の Windows 7 用ボトルが動作しなくなりました。ちょっと安易な行為でしたね… f^O^;)
Jw_cad v8.03a のみを CrossOver にインストールした場合のエラーその2
Jw_cad v8.03a インストール時のもう一つのエラーです。
Starting '/Applications/CrossOver.app/Contents/SharedSupport/CrossOver/bin/wineloader' 'winewrapper.exe' '--new-console' '--wait-children' '--no-convert' '--run' '--'
'Z:\Volumes\Mac OS X HD2\tmp\jww803a.exe'
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:richedit:ReadStyleSheet skipping optional destination
'Z:\Volumes\Mac OS X HD2\tmp\jww803a.exe'
err:mscoree:LoadLibraryShim error reading registry key for installroot
err:richedit:ReadStyleSheet skipping optional destination
これらは、Jw_cad v8.03a アプリ本体をインストールした時のエラー出力ですね。Jw_cad v7.11アプリ本体をインストールしたときにはなかったエラー出力になります。
しかし、Wine では、ソフトウェアをインストールするときによく見かけるエラーのようなので、Wine 側の実装待ちのような気がします。(依存ソフトの不足の可能性も否定はできないですが。)
対応する Wine 1.8.4 のソースから、上記はプログラムソース上、mscoree.dll の mscoree_main.c 内の LoadLibraryShim 関数でのエラー出力と、riched20.dll の reader.c 内の ReadStyleSheet 関数でのエラー出力のようです。
- https://source.winehq.org/git/wine.git/blob/c03303838dc648b4dc9fc8d0c78b4ec51a455253:/dlls/mscoree/mscoree_main.c
- https://source.winehq.org/git/wine.git/blob/c03303838dc648b4dc9fc8d0c78b4ec51a455253:/dlls/riched20/reader.c
ソースコード上は重大なエラーのようには見えません。
Wine 環境で、Jw_cad の全機能が完全に動くことを期待しているわけではないですが。少なくとも Jw_cad v7.11 の評価 Rate 同等に、 Jw_cad v8.03a にも基本機能が動くことを 期待したいですね。
Jw_cad v8.03a 実行時のエラー
ということで、次は、CrossOver Mac に Jw_cad v8.03a のみをインストールした場合の実行時エラーを確認します。実行時エラーの確認方法ですが、CrossOver Mac の Jw_cad v8.03a アイコンをマウスで右クリックして、「オプションを有効にして実行」を選択するとダイアログが表示されるので、「ログファイルを作成する」にチェックをいれて Jw_cad v8.03a を実行します。
Jw_cad v8.03a を起動して、何もせずに終了するだけで、以下のエラーがログ出力されます。これらのエラーは Jw_cad v7.11 では出力されません。
(1)
err:ole:CoGetClassObject class {317d06e8-5f24-433d-bdf7-79ce68d8abc2} not registered
err:ole:CoGetClassObject no class object {317d06e8-5f24-433d-bdf7-79ce68d8abc2} could be created for context 0x1
err:ole:CoGetClassObject no class object {317d06e8-5f24-433d-bdf7-79ce68d8abc2} could be created for context 0x1
(2)
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\JWW\\common_lib.dll") not found
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\JWW\\common_lib_AP202.dll") not found
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\JWW\\common_lib_AP202.dll") not found
(1)はまたしても ole のエラーですが、ole32.dll の comprobj.c 内の CoGetClassObject 関数のエラー出力のようです。
- https://source.winehq.org/git/wine.git/blob/c03303838dc648b4dc9fc8d0c78b4ec51a455253:/dlls/ole32/compobj.c
ちなみに、「317d06e8-5f24-433d-bdf7-79ce68d8abc2」は、Windows 7 実環境のレジストリを確認すると、windowscodecs.dll 関連の CLSID として登録されていました。しかし、CrossOver の環境では、レジストリに登録はありません。
wine 1.8.4 のソースで確認すると、 windowscodecs_wincodec.idl 内で、WICImagingFactory の定義で「317d06e8-5f24-433d-bdf7-79ce68d8abc2」の値が使われています。
- https://source.winehq.org/git/wine.git/blob/c03303838dc648b4dc9fc8d0c78b4ec51a455253:/dlls/windowscodecs/windowscodecs_wincodec.idl
Jw_cad v8.03a のどの機能に影響があるのかはわかりませんが、レジストリにあるべきものがないので、何かしらの機能が動かないものと想像します。
(2)は MFC42.DLL が見つからないというエラーなので、依存コンポーネントのインストールが必要です。MFC42.DLL は、「Microsoft Visual C++ 6.0(再頒布可能)」に含まれているので、Jw_cad v8.03a インストール時に同時にインストールする必要があります。
ただ、「Microsoft Visual C++ 6.0(再頒布可能)」は Visual C++ の古いランタイムライブラリーなので、もっとスマートなやり方があるかもしれないですが。
Microsoft Visual C++ 6.0 と Jw_cad v8.03a を同時にインストールすると
ということで、Jw_cad v8.03a をインストールするときに、「Microsoft Visual C++ 6.0(再頒布可能)」を同時にインストールしました。すると、Jw_cad v7.11 のときと同様に、Microsoft Misual C++ 6.0 をインストールしたときのエラーが追加で出力されました。
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\comcat.dll" -> "C:\\windows\\system32\\comcat.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\oleaut32.dll" -> "C:\\windows\\system32\\oleaut32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\olepro32.dll" -> "C:\\windows\\system32\\olepro32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\stdole2.tlb" -> "C:\\windows\\system32\\stdole2.tlb"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\oleaut32.dll" -> "C:\\windows\\system32\\oleaut32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\olepro32.dll" -> "C:\\windows\\system32\\olepro32.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 0 "C:\\users\\crossover\\Temp\\IXP000.TMP\\stdole2.tlb" -> "C:\\windows\\system32\\stdole2.tlb"
また、実行時エラーは、以下のようになります。
err:ole:CoGetClassObject class {317d06e8-5f24-433d-bdf7-79ce68d8abc2} not registered
err:ole:CoGetClassObject no class object {317d06e8-5f24-433d-bdf7-79ce68d8abc2} could be created for context 0x1
err:ole:CoGetClassObject no class object {317d06e8-5f24-433d-bdf7-79ce68d8abc2} could be created for context 0x1
MFC42.DLL 関連のエラーはなくなっていますが、相変わらず「ole:CoGetClassObject」に関するエラーは出力されています。
その他に、MS フォントの代替フォントが必要
CrossOver Mac(Wine)を使って、Jw_cad をインストールするとき、MS フォントがシステムにインストールされていないと、代替フォントをインストールする必要があります。Jw_cad v8.03a をインストールした直後では、「MS ゴシック」、「MS P ゴシック」が選択できません。
このため、MS フォントの代替として「梅フォントパッケージ」をインストールします。
今回の結論
- CrossOver Mac 15.3.1 に Jw_cad v8.03a をインストール可能
- Jw_cad v7.11 と同様に、「Microsoft Visual C++ 6.0(再頒布可能)」が必要
- Jw_cad v7.11 と同様に、「梅フォントパッケージ」が必要
- Jw_cad v7.11 にはなかったインストール時エラーが出力される
- Jw_cad v7.11 にはなかった実行時エラーが出力される
- Jw_cad v8.03a の各機能の動作確認が必要
- Wine の実装に期待するべし
Mac で Linux や Windows を動かしたいなら、