2012年6月30日土曜日

LibreOfficeとunoconvを、IIS6で動かした!

この問題の対処法が判りました:
Failed to connect to C:\Program Files\LibreOffice 3.5\program\soffice.exe (pid=10080) in 6 seconds.
Connector : couldn't connect to socket (WSAECONNREFUSED, Connection refused)
Error: Unable to connect or start own listener. Aborting. 
対策:(2012/07/05に大幅修正!)

① IUSRを止めて、一般的なアカウントに変更する。
Users権限を持っていれば十分です。Administrators権限は不要です。


参考:https://github.com/dagwieers/unoconv/issues/44

② AppDataのパスを固定化する。

それでもダメなら、AppDataのパスを固定化します。

その一般的なアカウントでログインし、レジストリエディタを立ち上げます。例:
runas /u:Pro4 /p regedit.exe
レジストリの次の場所のAppData値
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
こちらの指している場所を、具体的なパスに変更する。例:
C:\Documents and Settings\Pro4\Application Data
こんな感じです:

最初は次のようになっています:
%USERPROFILE%\Application Data

原因:(2012/07/05に修正)

長々と追跡しましたが、次の箇所で、失敗していたようです。
if ( !GetSpecialFolder( &ustrFile, CSIDL_APPDATA) )
普通はここで失敗しない手はずですが…

IUSR_XXXのアカウントを確認しますと、Guests権限になっていました。

また、IIS7.5では、IUSRは、NT AUTHORITY\IUSRに収まっていたりと、低権限故のアクセス制限が多数掛けられている可能性が見込まれます。

それで、CSIDL_APPDATAは、bootstrap.ini中の、$SYSUSERCONFIGを解決する際に必要とされます。
UserInstallation=$SYSUSERCONFIG/LibreOffice/3
utl::Bootstrap::locateUserInstallationが、それを取得しようとしますが、GetSpecialFolderで失敗します。
return UserInstall::E_Creation;
UserInstall::UserInstallError instErr_fin = UserInstall::finalize();まで戻りまして、次の様な具合で落ちます:
HandleBootstrapErrors( BE_USERINSTALL_FAILED );
「プログラムは起動できません。」「内部エラーが発生しました。」を表示する事になる様です:
FatalError(aMessage);

0 件のコメント:

コメントを投稿