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

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

AdobeReader Xをグループポリシーで自動展開したいと思ったけど。。

(※AdobeReaderX時代に書いたメモですが、XIでも基本的には同じだと思います。)

最近よく脆弱性をつつかれるようになったAdobeReaderですが、最新版のXを自動的にドメイン参加している端末に展開したいというのが今回の要件です。

これが思いの他ハマリました。

インストーラの入手

まず、最近のAdobeは再頒布できるインストーラファイルをダウンロードさせないようになっています。

再頒布できるインストーラファイルを手に入れようとするには、Adobe Readerの配布から申し込みをしないといけません。

さて、申し込みが終わって、Adobeから送られてくるメールにあるURLをつついて、ダウンロードページに飛びました。

OS,言語、バージョンを選びインストーラファイルをダウンロードしたのですが、このインストーラファイルはexe形式でMSIファイルでないのです。

exe実行時にファイルを解凍してるっぽいのでテンポラリフォルダ覗いたんですが、MSIファイルが見当たりません。

MSIファイルでないとグループポリシーの[ソフトウェア]インストールの機能が使えません。

(グループポリシーの[ソフトウェア]インストールの機能を使わず、バッチでインストールするには、このexeタイプのインストーラでも可能です)

で、途方にくれてぐぐってみたら備忘録 : Adobe Reader X のmsiパッケージのダウンロード方法に情報が。。

ftp://ftp.adobe.com/pub/adobe/reader/win/10.x/10.0.0/ja_JP/ で10.0のMSIとexeが公開されているようです。

また、http://www.adobe.com/support/downloads/product.jsp?product=10&platform=Windowsのページにある、[Adobe Reader MUI 10.1 - Multiple Languages]のリンクからもマルチランゲージ版がダウンロードできるようです。(ZIP内に10.0のMSIと10.1のMSPが入っています)

ただ、AdobeMSIファイルはメジャーバージョン毎にしか出さない方針のようです。

それ以降のアップデート(10.1とか、10.1.1とか)はMSPファイルで提供しています。残念なことにこのMSPファイルは、グループポリシーの[ソフトウェア]インストールの機能では配布できないんですよね。

ですので、結局アップデートをかけようとするとバッチに頼るしか無いんですよね。

MSPファイルのダウンロードですが、上記にも書いたhttp://www.adobe.com/support/downloads/product.jsp?product=10&platform=Windowsの[Updates/Programs]以下からダウンロード可能です。

インストール(MSI,MSPは断念)

さて、インストールですが、MSIファイルはグループポリシーの[ソフトウェア]インストールで簡単に配布できます。

面倒なのが、MSPファイルによるアップデートですね。

これは既に書いたように、グループポリシーの[ソフトウェア]インストールで展開できません。

なので、ログオンスクリプトでバッチから実行するしか無いでしょう。

先ほどダウンロードサイトの参考先として取り上げたブログの備忘録 : AdobeReader9.4.1をグループポリシーでインストールを参考にしてバッチファイルを作って見ました。

しかし、どうもうまく行きません。1642のエラーコードが返ります。1642エラーはWindows インストーラ プロセスのエラー コードおよびエラー メッセージ一覧によると、アップグレード修正プログラムをインストールできません。アップグレードするプログラムがないか、またはバージョンが異なる可能性があります。アップグレードするプログラムがこのコンピュータにあり、アップグレード修正プログラムが正しいかどうかを確認してください。という意味のようです。

Adobe Readerをサイレント・インストールする - @ITの[Adobe Readerのパッチの自動インストール]の部分を参考にし、start /wait msiexec.exe /passive /norestart /update "\\sv\share\AdbeRdrUpd1011.msp" /log "%windir%\AdbeRdrUpd1011.msp.log" としてみましたが、これもダメでした。

インストール(exe編)

結局、再頒布版のexeをバッチでインストールすることにしました。

再頒布のexeに以下のように /? スイッチを入れると使える引数が表示されます。

AdbeRdr1011_ja_JP.exe /?

結局、バッチファイルで以下のコマンドを実行させるようにしました。

AdbeRdr1011_ja_JP.exe /sAll /rs /rps /l

グループポリシーのログオンスクリプトに設定するのであれば、ログファイルをチェックし、それが無ければ実行、あればスキップみたいな形にする必要があるかと思います。

これに関しては機会があれば書きたいと思います。。

また、サイレントインストールオプションにしても、exeから解凍中の画面は表示されてしまいます。

参考:

Adobe Readerをサイレント・インストールする - @IT

Adobe Readerの再配布版(スタンドアロン・インストール版)を入手する - @IT

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

アップデートと配布に関する情報(Acrobat/Adobe Reader X)

Adobe Reader 9の無人インストール - ThanksgivingSoftの日記

ttp://get.adobe.com/jp/reader/enterprise/

追記:

カスタマイズツールを使うと、いろいろカスタマイズの設定したAdobeReaderインストールパッケージが作れるようです。

詳しくは、カスタマイズしたAdobe Reader Xのインストーラの作り方 - 自動アップデートなどを無効にしたり、インストール後のEULAを非表示にしたり。カスタマイズしたAdobe Readerのインストールパッケージの作り方 - 自動アップデートなどを無効にしたり、インストール後のEULAを非表示にしたり。を参考に。

Adobe Acrobat 9/Adobe Reader 9(Windows 版)インストーラのカスタマイズも参考になると思います。

さらに追記:

上述でMSPでのアップロードができないと書いてましたが、できました。

その後いろいろ調査していたら、http://kb2.adobe.com/jp/cps/839/cpsid_83982/attachments/Acrobat_Enterprise_Administration_J.pdfに詳しい情報が載っていました。

コマンドでインストールする方法を以下にまとめてみました。

まず、MSI,MSPファイルの用意ですが、get.adobe.com/jp/reader/enterprise/からダウンロードできる exe からMSI,MSPファイルを抽出することができます。(もちろん既出のサイトから個別にダウンロードしても構いません)

msi,mspを抽出するにはコマンドで以下のように指定します。

AdobeReader10の場合

AdbeRdr1013_ja_JP.exe -sfx_ne -sfx_o"C:\adobereadertmp"

AdobeReader9の場合

AdbeRdr950_ja_JP.exe -nos_o"C:\adobereadertmp" -nos_ne

9と10では解凍に使うオプションが違います。

以下のオプションが使用可能です。

9.x用  10.x用

-nos_ne -sfx_ne :解凍後にファイルを実行しない。 このスイッチは、ユーザーがインストーラーのコンテンツのみを抽出し、インストーラーを実行したくない場合に使用。

-nos_nd -sfx_nd :解凍後後にファイルを削除しない。(-r スイッチを上書き)。-r スイッチは、既存フォルダーを使用し、追加の抽出フォルダーを作成せずに同一のフォルダーに抽出ファイルを上書。

-nos_o  -sfx_o : 展開されたパッケージのコンテンツが置かれるフォルダー名を指定。フォルダー名は引用符で囲む必要がある。既存のフォルダーを使用しないことをお勧めします。また、「-nos_o」の後にスペースがないようにします

     -sfx_va : 成果物の解凍を検証します。

AdbeRdr1013_ja_JP.exe を解凍した場合、"AcroRead.msi"がベースとなるインストーラで、"AdbeRdrUpd1013.msp"がアップデート用の差分MSPパッケージになるようです。

次に、MSIファイルからインストールを行います。以下のような感じで指定します。

start /wait msiexec /i AcroRead.msi /passive /norestart /l "%windir%\AdbeRdr.log" ALLUSERS=TRUE EULA_ACCEPT=YES SUPPRESS_APP_LAUNCH=YES

そして /update オプションでパッチのmspファイルをインストールします。

AdobeReader10の場合は AcroRead.msi がインストールされていれば、パッチは最新の分だけ適用したので構いません。

(9の場合は試してないのでわかりませんが、もしかすると9.4.1 , 9.4.2 というふうに順々にアップデートしないといけないかもしれません)

start /wait msiexec /update "AdbeRdrUpd1013.msp" /passive /norestart /l "%windir%\AdbeRdrUpd.log" ALLUSERS=TRUE EULA_ACCEPT=YES SUPPRESS_APP_LAUNCH=YES

start /wait はインストールが終わるまでコマンドの実行を待つ意味なので、バッチファイルで実行するときはこのオプションを付けたほうが良いですね。

WindowsInstaller各オプションは以下のような意味になるようです。

/i : ベースとなるパッケージインストーラ(msi)を指定します。

/update : アップデート用のパッケージファイル(msp)を指定します。

/passive : インストールを自動実行。対話は不要だが進行状況が表示される。

/quiet : インストールを自動実行。対話は不要だが進行状況が表示されない(完全サイレントインストール)。

/norestart : 再起動が必要であっても最起動しない。

/l : ログを指定したパスに保存。

ALLUSERS=TRUE : すべてのユーザにインストール。

EULA_ACCEPT=YES : EULAに同意。(これにより初回起動時に使用許諾の同意画面が非表示になる)

SUPPRESS_APP_LAUNCH=YES : インストール後にAdobe Readerがすぐ起動されるのを防ぐ。

なお、アップデートパッチですが、get.adobe.com/jp/reader/enterprise/ からダウンロードしてインストールしたものは MUI 版じゃないとアップデートできませんでした。

多分ベースのインストールパッケージがMUI版だったためと思われます。