試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

wime向けにATOK2009体験版を入れて試そうとしたが...

ATOK2009の体験版をwimeで使えるかどうかを試すためにWine環境へのインストールを試みた。

  1. インストーラが固まる?
  2. ネイティブ版Windowsインストーラは動作せず

インストーラが固まる?

配布ファイルの自己展開書庫at22try3.exeを実行して展開されるディレクトリツリーのAUTOPLAY.exeからインストールを行ってもmsiexecで直接ATOK/ATOK22.msiを実行してもインストールの途中で固まる。
以下は[ホームディレクトリ]/.wine-wime/へインストールしようとする作業例。

$ rm ~/.wine-wime -fr
$ WINEPREFIX=~/.wine-wime msiexec /i [展開した場所]/ATOK/ATOK22.msi
(中略)
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 7 ignored L"Upgrade" table values
err:msi:HANDLE_CustomType34 Unable to execute command L"\"C:\\Program Files\\Common Files\\Justsystem\\LMA\\JSLMAUI.exe\" -q"
fixme:msi:ACTION_HandleStandardAction unhandled standard action L"SetODBCFolders"
fixme:msi:msi_unimplemented_action_stub MigrateFeatureStates -> 7 ignored L"Upgrade" table values
fixme:msi:msi_unimplemented_action_stub RemoveExistingProducts -> 7 ignored L"Upgrade" table values
fixme:msi:ACTION_CustomAction Rollback only action... rollbacks not supported yet
err:rpc:I_RpcGetBuffer no binding
fixme:msi:msi_unimplemented_action_stub DeleteServices -> 1 ignored L"ServiceControl" table values
fixme:msi:msi_unimplemented_action_stub SelfUnregModules -> 3 ignored L"SelfReg" table values
fixme:msi:msi_unimplemented_action_stub UnregisterTypeLibraries -> 1 ignored L"TypeLib" table values
fixme:msi:msi_unimplemented_action_stub UnregisterProgIdInfo -> 1 ignored L"ProgId" table values
fixme:msi:msi_unimplemented_action_stub RemoveShortcuts -> 16 ignored L"Shortcut" table values
fixme:msi:msi_unimplemented_action_stub RemoveFolders -> 23 ignored L"CreateFolder" table values
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:reg:RegSetKeySecurity :(0xa0,1,0x4e50268): stub
fixme:shell:DllCanUnloadNow stub
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\Common Files\\Justsystem\\JsSchHlp\\JsWebEnqUI.ocx") not found
Failed to load DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsWebEnqUI.ocx
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\Common Files\\Justsystem\\JsSchHlp\\JsSchUI.ocx") not found
Failed to load DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsSchUI.ocx
err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\Common Files\\Justsystem\\JsSchHlp\\JsSchWrap.ocx") not found
Failed to load DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsSchWrap.ocx
fixme:msi:ITERATE_InstallService Dependency list unhandled!
(固まる)

Ctrl+Cを繰り返し入力することで抜けることはできたが、この後、このWine環境でアプリケーションを実行しようとすると固まってしまって何もできない状態になってしまった。普段、Wine環境を標準の[ホームディレクトリ]/.wine/だけで使用している場合は試さないほうが良さそう(試すならコピーを作っておくとよい)。

(Ctrl+Cを押す)
err:msi:ITERATE_StartService Failed to start service L"JustSystems License Manage Agent"
(Ctrl+Cを押す)
err:msi:ITERATE_Actions Execution halted, action L"ExecuteAction" returned 1627
(ウィザードのページが切り替わり終了ページになる)
Deleting active MRSW lock (0x11495c), expect failure

途中のMFC42.DLLに関するメッセージが気になったので

$ WINEPREFIX=~/.wine-wime [winetricksの場所] mfc42

winetricksで「mfc42」をインストールしてみたが

$ WINEPREFIX=~/.wine-wime msiexec /i [展開した場所]/ATOK/ATOK22.msi
(中略)
fixme:shell:DllCanUnloadNow stub
fixme:shell:DllCanUnloadNow stub
fixme:reg:RegSetKeySecurity :(0xa0,1,0x4e50268): stub
fixme:shell:DllCanUnloadNow stub
Successfully registered DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsWebEnqUI.ocx
Successfully registered DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsSchUI.ocx
Successfully registered DLL C:\Program Files\Common Files\Justsystem\JsSchHlp\JsSchWrap.ocx
fixme:msi:ITERATE_InstallService Dependency list unhandled!
(以下MFCのDLLのインストール前と同様)

該当するファイルの登録の処理は正常に行われるようになったようだが、その後の処理は全く改善されなかった。
どうもmsiexecの「ITERATEなんとか」に関する処理がうまく行われていないようにも見えるのだが、詳しいことはよく分からない。
「WINEDEBUG=+msi」指定をすると、固まるところの少し手前の処理は

$ WINEPREFIX=~/.wine-wime WINEDEBUG=+msi msiexec /i [展開した場所]/ATOK/ATOK22.msi
(中略)
trace:msi:ControlEvent_FireSubscribedEvent Firing Event L"ActionText"
trace:msi:MSIText_WndProc 0x70042 000c 00000000 007eb7a8
trace:msi:MSIDialog_WndProc 0x0138
trace:msi:MSIText_WndProc 0x70042 0138 0000030c 00070042
trace:msi:MSIDialog_WndProc 0x000f
trace:msi:MSIDialog_WndProc 0x0014
trace:msi:MSIText_WndProc 0x70042 000f 00000000 00000000
trace:msi:MSIText_WndProc 0x70042 0085 00000001 00000000
trace:msi:MSIText_WndProc 0x70042 0014 0000030c 00000000
trace:msi:MSIDialog_WndProc 0x0138
trace:msi:MSIText_WndProc 0x70042 0138 0000030c 00070042
trace:msi:msiobj_release object 0x7e84d0 destroyed
trace:msi:msiobj_release object 0xa7db90 destroyed
trace:msi:MSI_DatabaseOpenViewW L"SELECT * FROM ServiceControl" 0x32f938
trace:msi:MSI_ParseSQL Parse returned 0
trace:msi:MSI_ViewExecute 0x7e84d0 (nil)
trace:msi:MSI_ViewFetch 0x7e84d0 0x32f8f8
trace:msi:msi_view_get_row 0x12d140 0x7eb560 0 0x32f8f8
(固まる)

のようになっていた。
なお、msiexec/aオプションを用いて取り出そうともしたが、同様の挙動となり失敗した。

ネイティブ版Windowsインストーラは動作せず

winetricksでネイティブ版Windowsインストーラがインストール/設定できるので(Wine環境を空にして)試してみた。

$ rm ~/.wine-wime -fr
$ WINEPREFIX=~/.wine-wime [winetricksの場所] msi2

しかし

$ WINEPREFIX=~/.wine-wime msiexec /i [展開した場所]/ATOK/ATOK22.msi 
fixme:sfc:SFC_3 0
(終了)
$ WINEPREFIX=~/.wine-wime msiexec /a [展開した場所]/ATOK/ATOK22.msi targetdir="$(winepath -w /tmp/test)" /qn                               
fixme:sfc:SFC_3 0                 
err:ole:create_server class {000c101c-0000-0000-c000-000000000046} not registered
err:ole:CoGetClassObject no class object {000c101c-0000-0000-c000-000000000046} could be created for context 0x4
fixme:advapi:RegisterEventSourceA ((null),"MsiInstaller"): stub
fixme:advapi:RegisterEventSourceW (L"",L"MsiInstaller"): stub
fixme:advapi:ReportEventA (0xcafe4242,0x0002,0x0000,0x000003f7,(nil),0x0006,0x00000000,0xa1c758,(nil)): stub
fixme:advapi:ReportEventW (0xcafe4242,0x0002,0x0000,0x000003f7,(nil),0x0006,0x00000000,0x12a8d0,(nil)): stub
fixme:advapi:DeregisterEventSource (0xcafe4242) stub
(3行の不明な文字列)

残念ながら動かなかった。
その環境を用いて、ATOK体験版に付属のWindowsインストーラ3.1再配布可能パッケージのインストーラ(WindowsInstaller-KB893803-v2-x86.exe)も(Windowsのバージョンを2000にして)試したが、こちらはインストール後に端末のプロンプトが表示されなかった(インストーラGUIが終了してもプログラムが終了していない状態となった)ので手動でCtrl+Cで停止させることになった。

$ WINEPREFIX=~/.wine-wime wine [展開した場所]/ATOK/WindowsInstaller-KB893803-v2-x86.exe
fixme:clusapi:GetNodeClusterState ((null),0x32f8a0,2128616200) stub!
fixme:advapi:DecryptFileA "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\" 00000000
fixme:setupapi:pSetupGetGlobalFlags stub
fixme:wintrust:WinVerifyTrust unimplemented for 4
fixme:ntdll:server_ioctl_file Unsupported ioctl 9c040 (device=9 access=3 func=10 method=0)
fixme:sfc:SFC_3 0
fixme:wintrust:CryptCATGetCatAttrInfo 0xffffffff, L"SPAttr"
fixme:wintrust:CryptCATGetCatAttrInfo 0x19ad28, L"SPAttr"
fixme:wintrust:CryptCATGetCatAttrInfo 0xffffffff, L"SPLevel"
fixme:wintrust:CryptCATGetCatAttrInfo 0x19ad28, L"SPLevel"
fixme:setupapi:InstallCatalog "C", "T", (nil)
err:setupapi:SetupDefaultQueueCallbackA copy error 2 "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\msi.dll" -> "C:\\windows\\system32\\DllCache\\msi.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 2 "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\msiexec.exe" -> "C:\\windows\\system32\\DllCache\\msiexec.exe"
err:setupapi:SetupDefaultQueueCallbackA copy error 2 "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\msihnd.dll" -> "C:\\windows\\system32\\DllCache\\msihnd.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 2 "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\msimsg.dll" -> "C:\\windows\\system32\\DllCache\\msimsg.dll"
err:setupapi:SetupDefaultQueueCallbackA copy error 2 "d:\\5f10f79eff0903bf4515c3d4f991c4dc\\msisip.dll" -> "C:\\windows\\system32\\DllCache\\msisip.dll"
fixme:setupapi:pSetupGetGlobalFlags stub
fixme:setupapi:pSetupGetGlobalFlags stub
fixme:wintrust:CryptCATGetCatAttrInfo 0x1652a8, L"SPAttr"
fixme:wintrust:CryptCATGetCatAttrInfo 0x1652a8, L"SPAttr"
fixme:wintrust:CryptCATGetCatAttrInfo 0x1652a8, L"SPLevel"
fixme:wintrust:CryptCATGetCatAttrInfo 0x1652a8, L"SPLevel"
fixme:setupapi:InstallCatalog "C", "K", (nil)
fixme:advapi:RegisterEventSourceA ((null),"Windows Installer 3.1"): stub
fixme:advapi:RegisterEventSourceW (L"",L"Windows Installer 3.1"): stub
fixme:advapi:ReportEventA (0xcafe4242,0x0004,0x0000,0x400e1119,0x16ab60,0x0002,0x00000000,0x33bb40,(nil)): stub
fixme:advapi:ReportEventW (0xcafe4242,0x0004,0x0000,0x400e1119,0x16ab60,0x0002,0x00000000,0x164c18,(nil)): stub
fixme:advapi:DeregisterEventSource (0xcafe4242) stub
(終了しないのでCtrl+Cで止める)

この状態で試しても

$ WINEPREFIX=~/.wine-wime msiexec /i [展開した場所]/ATOK/ATOK22.msi 
fixme:sfc:SFC_3 0
(3行の不明な文字列)

となってうまく動かなかった。
空のWine環境でWindowsインストーラ3.1をインストール後「msi」「msiexec.exe」を手動でDLLオーバーライド設定しても同様だった。
このように色々と試したが、インストーラが新しすぎるせいかうまくインストールが行えず、ATOK2009体験版の動作を確認することはできなかった。Wineの今後のバージョンに期待。
最後に.msi形式のファイルから中身を取り出す「msix」というツールも試したが

$ wine [MsiX.exeの場所] [展開した場所]/ATOK/ATOK22.msi
Extracting Binary.NewBinary10
Extracting Binary.NewBinary20
Extracting Binary.NewBinary31
Extracting Binary.NewBinary12
Extracting Binary.NewBinary22
Extracting Binary.NewBinary32
Extracting Binary.NewBinary13
Extracting Binary.NewBinary23
Extracting Binary.NewBinary14
Extracting Binary.NewBinary24
Extracting Binary.NewBinary15
Extracting Binary.NewBinary25
Extracting Binary.NewBinary16
Extracting Binary.NewBinary26
Extracting Binary.NewBinary17
Extracting Binary.NewBinary27
Extracting Binary.NewBinary18
Extracting Binary.NewBinary28
Extracting Binary.NewBinary19
Extracting Binary.NewBinary29
Extracting Binary.NewBinary1
Extracting Binary.NewBinary2
Extracting Binary.NewBinary3
Extracting Binary.NewBinary4
Extracting Binary.NewBinary5
Extracting Binary.NewBinary6
Extracting Binary.NewBinary7
Extracting Binary.NewBinary8
Extracting Binary.NewBinary9
Extracting Binary.lma_ca.dll
Extracting Binary.ISNetAPI.dll
Extracting Binary.ISSELFREG.DLL
Extracting Binary.InteriorBin1
Extracting ISSetupFile.SetupFile1
Extracting ISSetupFile.SetupFile2
Extracting ISSetupFile.SetupFile3
Extracting ISSetupFile.SetupFile4
Extracting ISSetupFile.SetupFile5
Extracting ISSetupFile.SetupFile6
Extracting ISSetupFile.SetupFile7
Extracting ISSetupFile.SetupFile8
Extracting ISSetupFile.SetupFile9
Extracting Binary.SetAllUsers.dll
Extracting ISSetupFile.SetupFile10
Extracting ISSetupFile.SetupFile11
Extracting ISSetupFile.SetupFile12
Extracting ISSetupFile.SetupFile13
Extracting ISSetupFile.SetupFile14
Extracting ISSetupFile.SetupFile15
Extracting ISSetupFile.SetupFile16
Extracting Icon.ARPPRODUCTICON.exe
Extracting Binary.ISSetupFilesHelper
Found: _DigitalSignature
Found: _SummaryInformation
Extracting MsiDigitalCertificate.justsystems.cer
Extracting Icon.NewShortcut9_3FD149111B744A9E89596C54413668C6.exe
Extracting Icon.NewShortcut10_9E4A2B71AC024CBEB96AB3EADEA603D5.exe
$ file *
Binary.ISNetAPI.dll:                                     PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.ISSELFREG.DLL:                                    PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.ISSetupFilesHelper:                               PE32 executable for MS Windows (DLL) (GUI) Intel 80386 32-bit
Binary.InteriorBin1:                                     JPEG image data, JFIF standard 1.02
Binary.NewBinary1:                                       PC bitmap, Windows 3.x format, 499 x 58 x 24
Binary.NewBinary10:                                      MS Windows icon resource - 2 icons, 48x48, 256-colors
Binary.NewBinary12:                                      MS Windows icon resource - 1 icon
(中略)
Icon.NewShortcut10_9E4A2B71AC024CBEB96AB3EADEA603D5.exe: MS Windows icon resource - 8 icons, 16x16, 256-colors
Icon.NewShortcut9_3FD149111B744A9E89596C54413668C6.exe:  MS Windows icon resource - 4 icons, 16x16, 256-colors
MsiDigitalCertificate.justsystems.cer:                   data

中身の展開自体はされているが、この状態ではファイル名も分からない。/extオプションも試したが、拡張子までしか分からない。

使用したバージョン:

  • Wine 1.1.12-1.1.17, 1.1.26