CrossOver(Wine)を使って、Mac に Jw_cad v8 をインストールする。お試し

まずは、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

これらは、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


これらは、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)







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

これらは、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


これらは、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

(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

(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: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

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 を動かしたいなら、
Parallels Desktop 13 for Mac
パラレルス