OpenOfficeをActiveDirectoryで展開する
OpenOffice3.2が出たのでWindowsドメイン内で一斉展開することになりました。
ただ、手動で各クライアントにインストールすのではなく、グループポリシーを使って展開することにします。

グループポリシーを使うとしても、バッチでやる方法と、ソフトウェアインストール機能を使う方法とがあります。(ソフトウェアインストール機能はMSIファイルが対象)

OpenOfficeはMSIを使っているので、ソフトウェアインストールが使えます。ということで、まずはソフトウェアインストールの方法です。

とりあえずグループポリシーで、コンピュータの構成→ソフトウェアの設定→ソフトウェアインストール からMSIを指定します。
展開の種類は"割り当て"とします。(ユーザの構成だと"公開"ってのも使えますが、これはコンパネのプログラムの追加と削除に出てくるだけで、ユーザが手動でインストールしなければならないようです。)

ソフトウェアインストールの参考:
@IT:MSIファイルをActive Directoryのグループ・ポリシーでインストールする
ソフトウェアインストール方法
GPOでのソフトウェアインストール

ソフトウェアインストールで定義すると、次回起動時(場合によってはその次の起動時)にインストールされます。
インストール中は下記のような画面となります。
e0091163_21373431.jpg



インストール終わらないとログインできないのが難点ですね。OpenOffice並みの巨大ソフトになると、サーバから転送してインストールとなるとかなり時間かかりますから。。


後、要件で、OpenOffice初回起動時に登録ウィザードが上がるのが困るということだったんで、これを何とか無効化できないかと調査しました。
答えがOpenOffice.org 登録ウィザードの無効化 - OpenOffice.org Wikiにありました。
なるほど、拡張機能入れればいいようです。

実はこの拡張機能はOpenOfficeの設定ファイルを書き換えてるだけでした。
その設定ファイル(中身はXML)のパスは下記です。

%programfiles%\OpenOffice.org 3\Basis\share\registry\data\org\openoffice\Setup.xcu


そして、下記ノードを追加しています。
<node oor:name="Office">
<prop oor:name="LicenseAcceptDate" oor:type="xs:string">
<value>2008-12-30T08:14:11</value>
</prop>
<prop oor:name="FirstStartWizardCompleted" oor:type="xs:boolean">
<value>true</value>
</prop>
</node>

要はライセンス承認日付と、ウィザード完了のフラグを入れているだけみたいですね。

FirstStartWizardCompleted フラグにに関する参考資料:
JODConverter - azlab 開発Memo
faq/3/140 - OpenOffice.org Q&A

この拡張機能をバッチでインストールするようにし、グループポリシー コンピュータの構成でスタートアップスクリプトに登録します。

"%programfiles%\OpenOffice.org 3\program\unopkg.exe" add --shared \\servername\dirname\DisableFirstStartWzd.oxt

(なおスタートアップのパスはグループポリシーのGUID\Machine\Scripts\Startup というフォルダに入るようです)

例:
\\domain.local\SysVol\domain.local\Policies\{640C9106-4479-43C3-B205-C260ECC67AAA}\Machine\Scripts\Startup




余談ですが、グループポリシーのソフトウェアインストールを使わずに、バッチでのサイレントインストールもできるようです。(バッチというかMSIの機能ですが。。)
Microsoft Windows - OpenOffice.org Wiki

msiexec /qn /i \servername\dirname\openofficeorg32.msi



さて、これでも初回起動時にユーザー登録のダイアログと、2回目起動時にバグフィックスの送信設定画面が出てきます。
これを何とかしろということで、さらに調査。。。

どうやらバグフィックスの設定やユーザ登録のダイアログ情報は設定ファイルに持っているようなので、かなり強引な手法ですがいったん設定したファイル群をコピーする方法をとることとしました。
なお、設定ファイルは %appdata%\OpenOffice.org\3\user 配下に入ってます。
最初バッチはユーザの構成でログインスクリプトで動かす予定でしたが、展開完了後も全ユーザが使えるようにしたかったので、コンピュータの構成でスタートアップスクリプトで動かすこととしました。
バッチはこんな感じです。
@echo off
 
rem ウィザード無効拡張機能インストール
"%programfiles%\OpenOffice.org 3\program\unopkg" add --shared \\servername\dirname\DisableFirstStartWzd.oxt
 
rem 各ユーザプロファイルのフォルダを探す
for /D %%i in ("%SystemDrive%\Documents and Settings\*") do (
rem echo %%i
rem OpenOffice3.2の設定フォルダが無ければ
IF NOT EXIST "%%i\Application Data\OpenOffice.org\3\user" (
rem サーバからOpenOfficeのユーザ設定データを取得する
xcopy "\\servername\dirname\Application Data" "%%i\Application Data" /e /c /q /y
)

rem デスクトップのショートカット削除
DEL /Q "%%i\デスクトップ\*OpenOffice.org Writer*.lnk"
DEL /Q "%%i\デスクトップ\*OpenOffice.org Calc*.lnk"
DEL /Q "%%i\デスクトップ\*OpenOffice.org Impress*.lnk"
DEL /Q "%%i\デスクトップ\*OpenOffice.org Math*.lnk"
DEL /Q "%%i\デスクトップ\*OpenOffice.org Base*.lnk"
DEL /Q "%%i\デスクトップ\*OpenOffice.org Draw*.lnk"
rem スタートメニューのショートカット削除
rmdir /Q "%%i\スタート メニュー\プログラム\OpenOffice.org 2.4"
DEL /Q "%%i\スタート メニュー\プログラム\スタートアップ\OpenOffice.org 2.4.lnk"
)
 
:end



さらに余談です。。

MSIにはMSTというのもあるらしいです。
例えばコマンドラインオプションを別に設定したいときとかに使えるようですね。
グループポリシーで展開する時に、オプション書いたMSTも指定しておくとより柔軟性が高まりそうです。
今回は使わなかったんで、細かい作成方法は不明ですが、参考になりそうなリンクだけのっけます。
グループポリシーを使ったアプリケーションのカスタムインストール
MSTファイルについて


MSI自体の編集は Orca というMS提供ツールを使えばできるらしいです。
OrcaはMSダウンロード:Windows Server 2003 SP1 Platform SDK Web Installの中に含まれるのでこれをインストールし、さらに、%programfiles%\Microsoft Platform SDK\Bin\Orca.Msi からインストールしないといけないすね。
インストール手順詳細は、Orca(msiファイルの編集ツール)をインストールする方法で説明されています。

またOpenOfficeのMSIの引数で、関連付けに関する設定もできるようです。
たとえばこんな感じ。

start "" /wait "openofficeorg30.msi" /passive ALLUSERS=1 SELECT_WORD=0 SELECT_EXCEL=0 SELECT_POWERPOINT=0 ADDLOCAL=ALL REMOVE=gm_o_Quickstart

↓にかかれてました。
OpenOffice 3.0.0 Silent - MSFN Forums(英文)
[PR]
by jehoshaphat | 2010-05-15 21:44 | サーバがらみ | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/12646420
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< グループポリシーのソフトウェア... (C++)環境変数となってるパ... >>