3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

OpenOfficeをActiveDirectoryで展開する

OpenOffice3.2が出たのでWindowsドメイン内で一斉展開することになりました。

ただ、手動で各クライアントにインストールすのではなく、グループポリシーを使って展開することにします。

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

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

とりあえずグループポリシーで、コンピュータの構成→ソフトウェアの設定→ソフトウェアインストール からMSIを指定します。

展開の種類は"割り当て"とします。(ユーザの構成だと"公開"ってのも使えますが、これはコンパネのプログラムの追加と削除に出てくるだけで、ユーザが手動でインストールしなければならないようです。)

ソフトウェアインストールの参考:

@IT:MSIファイルをActive Directoryのグループ・ポリシーでインストールする

ソフトウェアインストール方法

GPOでのソフトウェアインストール

ソフトウェアインストールで定義すると、次回起動時(場合によってはその次の起動時)にインストールされます。

インストール中は下記のような画面となります。

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

後、要件で、OpenOffice初回起動時に登録ウィザードが上がるのが困るということだったんで、これを何とか無効化できないかと調査しました。

答えがOpenOffice.org 登録ウィザードの無効化 - OpenOffice.org Wikiにありました。

なるほど、拡張機能入れればいいようです。

実はこの拡張機能OpenOfficeの設定ファイルを書き換えてるだけでした。

その設定ファイル(中身はXML)のパスは下記です。

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

そして、下記ノードを追加しています。

 oor:name="Office">

oor:name="LicenseAcceptDate" oor:type="xs:string">

>2008-12-30T08:14:11>

>

oor:name="FirstStartWizardCompleted" oor:type="xs:boolean">

>true>

>

>

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

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提供ツールを使えばできるらしいです。

OrcaMSダウンロード:Windows Server 2003 SP1 Platform SDK Web Installの中に含まれるのでこれをインストールし、さらに、%programfiles%\Microsoft Platform SDK\Bin\Orca.Msi からインストールしないといけないすね。

インストール手順詳細は、Orca(msiファイルの編集ツール)をインストールする方法で説明されています。

またOpenOfficeMSIの引数で、関連付けに関する設定もできるようです。

たとえばこんな感じ。

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(英文)