<   2013年 03月 ( 31 )   > この月の画像一覧
グループポリシーでUACを無効にする
グループポリシーでWindows7,VistaのUAC(ユーザーアカウント制御)を無効にする方法です。

[コンピュータの構成]→[Windowsの設定]→[セキュリティの設定]→[ローカルポリシー]→[セキュリティオプション]→[ユーザーアカウント制御:管理者承認モードですべての管理者を実行する]の値を 無効 にすればいいようです。

コンピュータの構成なので、ドメイン全体のGPOの設定するか、OUを作って、そのOUにコンピュータオブジェクトを追加する必要があります。

参考:
Windows Vista の UAC(ユーザーアカウント制御)機能を無効にしたい
[PR]
by Jehoshaphat | 2013-03-25 22:34 | 豆知識 | Trackback | Comments(0)
WindowsServer2003のドメインコントローラでWindowsVista,7用のグループポリシーを使いたい
WindowsServer2003のドメインコントローラでActiveDirectoryドメインを構成しています。(ADのモードはWindows2000混在)
このドメインにWindows7搭載のPCが参加することになりました。

WindowsVista以降はグループポリシーの設定項目が増えたと聞いていたので、そのグループポリシーをWindowsServer2003のドメインコントローラで利用できるようにする方法です。

結構厄介かな と思ってましたが、やってみれば非常に簡単でした。

参考にしたのは、機能が向上したWindows Vistaのグループ・ポリシー:@ITと、Windows Server 2003 Windows Vista 対応のグループポリシーを利用する方法です。

概要としては、Windows7のPCにあるGPOの管理テンプレートを、ドメインコントローラのSYSVOLに置くだけです。
GPOの編集は、クライアントツールをWindows7が動いている端末(おそらくVistaや2008でも可だがXPや2003はNGかと..)にインストールしてそこから行います。


管理テンプレートの設置
Windows Server 2003 ドメインコントローラ上も中央ストアとなる%SYSTEMROOT%\SYSVOL\domain\policiesフォルダ内に Policydefinitions フォルダを作成し、PolicyDefinitionsフォルダの中に ja-JP フォルダを作成します。

クライアントである Windows7(またはVista) の %SYSTEMROOT%\PolicyDefinitions\ja-JP フォルダ内のファイルを、%logonserver%\SYSVOL\%userdnsdomain%\policies\PolicyDefinitions フォルダ内のコピーします。(ドメイン管理者でログオンしておかないとコピー出来ないかもしれません)

同様に、クライアントの %SYSTEMROOT%\PolicyDefinitions\ja-JP フォルダ内のファイルを、%logonserver%\SYSVOL\%userdnsdomain%\policies\PolicyDefinitions\ja-JP フォルダ内のコピーします


ポリシーの設定
上記で中央ストアに追加した分のGPOの編集や設定は、WindowsServer2003上からは行えません。
Windows7上にRSAT(リモート サーバー管理ツール)をいれてそこから行う必要があります。


RSATはhttp://www.microsoft.com/downloads/ja-jp/details.aspx?displaylang=ja&FamilyID=7d2f6ad7-656b-4313-a005-4e344e43997dからダウンロードできます。

ダウンロードしたMSUファイルをダブルクリックで、インストールし再起動します。
その後、コンパネの[プログラムと追加]で、左ペインの[Windowsの機能の有効化または無効化]で、[リモートサーバ管理ツール]で[グループポリシー管理ツール]にチェックを入れます。

これで、Windows7の端末にドメイン管理者でログオンし、管理ツールにある[グループポリシー管理ツール]から、GPOの設定ができます。
かなり細かい部分まで設定できるようになっているので、かゆいところにも手が届きそうですね。

※グループポリシー管理ツール(GPMC)をWindowsServer2008R2に追加する場合は、サーバマネージャの機能の追加で[グループ ポリシー管理コンソール]を選んで追加すればいいようです。



参考:
Windows Server 2008をリモートから管理するツール(RSAT)
シナリオ 2: ADMX ファイルを使用したドメインベースの GPO の編集
Windows7でサーバー管理ツール(RSAT)を使う方法(Gpmc等)-教えて!HELPDESK
TechNet:GPMC をインストールする(WindowsServer2008の場合)
[PR]
by Jehoshaphat | 2013-03-25 22:27 | サーバがらみ | Trackback | Comments(0)
(バッチ)今のユーザが任意のグループに属しているか調べる
バッチファイルを実行するユーザが、任意のローカルもしくはドメインのグループに属しているかを調べる方法です。
以下のようにすることで、調べることができます。

rem ローカルのAdministratorsグループに属しているか
net localgroup Administrators | find /I "%USERNAME%"
if %ERRORLEVEL% == 0 (
echo "属してる"
) else (
echo "属してない"
)
 
rem ドメインの Domain Admins グループに属しているか
net user "%USERNAME%" /domain | find /I "*Domain Admins"
if %ERRORLEVEL% == 0 (
echo "属してる"
) else (
echo "属してない"
)


当初は、ドメインの任意のユーザがこのバッチを実行したPCのローカルの管理者(Administrators)かどうかを調べたいと思っていました。
ローカルのAdministratorsグループに、直にドメインのユーザを指定している場合は上記の方法で取得できました。
しかし、ローカルのAdministratorsグループにドメインのグループを指定しており、そのドメイングループにユーザが所属しているとかいう場合は上記の方法だけでは判定できません。
そのような場合、ローカルのAdiministaratorsグループ内のドメインメンバを列挙し、ユーザがそのドメイングループにいるかどうかを調べる必要があります。
が、バッチだとそのあたりの処理の実装が難しいので、断念しました。

やはりちょっと複雑になるような処理はVBScriptやプログラムにしてしまったほうが楽です。


ドメインユーザがローカルのAdministratorsグループに属しているかどうかは、whoami コマンドを使うといいようです。
ただ、whoami コマンドはVsita以降は標準で着いてますが、2000はリリースキット、XP SP2のサポートツールいれないと使えないようです。

whoami /groups | find /I "Administrator"
if %ERRORLEVEL% == 0 (
echo "ローカル管理者権限有り"
) else (
echo "ローカル管理者権限なし"
)


参考:
ユーザが管理者権限を有しているかバッチで判定する方法 - Windows Server Insider - @IT
Windows Server:システム管理者の視点 - 正式に認められた「Whoami」コマンド:ITpro
[PR]
by Jehoshaphat | 2013-03-24 22:25 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
(バッチ)OSのバージョンとサービスパックの有無を調べる

バッチファイルで、Windowsのバージョンと、サービスパックの情報を取得する方法です。

幾つか方法はあるかと思いますが、Windowsのバージョンの取得判定はWindowsのバージョン毎に処理を分岐させる [コマンドプロンプト] - Diary on windを参考にさせてもらいました。
WindowServer2003以降は ver コマンドではWindowsということしかわからない様で、systeminfo コマンドを使って調べてるようです。
(しかし、systeminfoコマンドはちょいと重いのであまり使いたくはないんですよね。。)


@echo off
 
rem Windowsのバージョンチェック
SETLOCAL ENABLEEXTENSIONS
VER|FIND "NT">NUL
IF %ERRORLEVEL% EQU 0 GOTO WINNT
 
VER|FIND "2000">NUL
IF %ERRORLEVEL% EQU 0 GOTO WIN2K
 
VER|FIND "XP">NUL
IF %ERRORLEVEL% EQU 0 GOTO WINXP
 
IF NOT EXIST %SystemRoot%\System32\systeminfo.exe GOTO WARN
FOR /F "tokens=2 delims=," %%A IN ('%SystemRoot%\System32\systeminfo.exe /FO CSV /NH') DO SET osvers=%%A
 
ECHO %osvers%|FIND "Server 2003">NUL
IF %ERRORLEVEL% EQU 0 GOTO WIN2K3
 
ECHO %osvers%|FIND "Windows Vista">NUL
IF %ERRORLEVEL% EQU 0 GOTO WINVISTA
 
ECHO %osvers%|FIND "Server 2008">NUL
IF %ERRORLEVEL% EQU 0 GOTO WIN2K8
 
ECHO %osvers%|FIND "Windows 7">NUL
IF %ERRORLEVEL% EQU 0 GOTO WIN7
GOTO WARN
 
rem 各OS別の処理
:WINNT
ECHO Windows NT
GOTO :EOF
 
:WIN2K
ECHO Windows 2000
GOTO :EOF
 
:WINXP
ECHO Windows XP
GOTO SP_CHK
 
:WIN2K3
ECHO Windows 2003
GOTO SP_CHK
 
:WINVISTA
ECHO Windows Vista
GOTO SP_CHK
 
:WIN2K8
ECHO Windows 2008
GOTO SP_CHK
 
:WIN7
ECHO Windows 7
GOTO SP_CHK
 
:WARN
ECHO Unknown Windows version
GOTO SP_CHK
 
 
rem サービスパックのチェック
:SP_CHK
 
FOR /F "TOKENS=1,2,*" %%A IN ('REG QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v "CSDVersion"') DO IF "%%A"=="CSDVersion" SET SPVER=%%C
echo %SPVER%
 
 
pause


サービスパックに関しては、レジストリから取得しています。
これ以外にも、wmic os get csdversion を使う方法があります。
以下のような感じです。

set SP_NAME=
set SP=
for /F "delims=" %%v in ('wmic os get csdversion') do set SP=%%v
 
ECHO %SP%|FIND "Service Pack 1">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP1
 
ECHO %SP%|FIND "Service Pack 2">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP2
 
ECHO %SP%|FIND "Service Pack 3">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP3



また、systeminfoからサービスパック情報も取得できますね。

IF NOT EXIST %SystemRoot%\System32\systeminfo.exe GOTO WARN
FOR /F "tokens=3 delims=," %%A IN ('%SystemRoot%\System32\systeminfo.exe /FO CSV /NH') DO SET osvers=%%A
 
echo %osvers%
 
ECHO %osvers%|FIND "Service Pack 1">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP1
ECHO %osvers%|FIND "Service Pack 2">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP2
ECHO %osvers%|FIND "Service Pack 3">NUL
IF %ERRORLEVEL% EQU 0 set SP_NAME=SP3
 
echo %SP_NAME%



しかし、wmic も reg query でレジストリから取得する方法も、systeminfo も XP以上出ないと使えません。
Windows2000でもサービスパックのバージョンを調べようとすると、他の手立てを取る必要があります。
(バッチじゃなくVBScriptを使ったほうが良いかもしれません)


参考:
Windows XPでSPのバージョンを確認するバッチファイルを作成し - Windows XP - 教えて!goo
バッチファイル(~.BAT)の中でXPsp2とsp3を判定する方法を教えてください。 - Yahoo!知恵袋
[PR]
by Jehoshaphat | 2013-03-23 22:22 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
(バッチ)レジストリの値を取得し変数に格納
バッチファイルで、レジストリの値を取得して変数に入れるための方法です。
レジストリからの値の取得は reg query コマンドで出来るようです。/v の後に、キーの名前を指定します。

例えばFlashPlayerのバージョンを取得するには以下のようにします。

C:\>reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX" /v "Version"

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX
Version REG_SZ 11.0.1.152


これを変数に入れるためには、実行結果を行ごとにループで回し、求めたい値の名前(結果行の空白で区切った1番目(%%A)。今回はVersion)が出てきたら、その3番目(%%C。%%Aから3つ目)を GET_VALUE 変数に入れるという処理の流れにすればいいようです。
@echo off
 
FOR /F "TOKENS=1,2,*" %%A IN ('REG QUERY "HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX" /v "Version"') DO IF "%%A"=="Version" SET GET_VALUE=%%C
 
echo Flashバージョン
echo %GET_VALUE%
 
pause



参考:
レジストリの値をコマンド プロンプトで取得する こちらのコードをほぼそのまま使わせてもらいました。
@IT:コマンド・プロンプトでレジストリを操作する
コマンドプロンプトを使ってみよう! -バッチファイル-
[PR]
by Jehoshaphat | 2013-03-22 22:21 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
(バッチ)ファイルフォルダの存在確認
バッチファイルで、ファイル・フォルダの存在確認を行う方法です。
EXIST で確認できるようですね。

参考先そのままですが、コードを掲載します。
SET filename="test.txt"
IF EXIST %filename% (GOTO FILE_TRUE) ELSE GOTO FILE_FALSE
 
:FILE_TRUE
ECHO "ファイルが見つかりました"
GOTO BAT_END
 
:FILE_FALSE
ECHO "ファイルが見つかりません"
GOTO BAT_END
 
:BAT_END

参考:
BATファイルでファイル、フォルダの存在確認
[PR]
by Jehoshaphat | 2013-03-21 22:19 | VBScirpt,WSH | Trackback | Comments(0)
(WSH)VBScriptでバイナリファイルのバージョンを取得したい

当初バッチファイルでバイナリファイル(exeとかdllとか)のバージョンを取得しようと思ってましたが、別途ツールをいけないらしく結構面倒そうでした。
(とりあえず,@IT:バイナリ・ファイルのバージョンを調べるコンピュータ系blog:バイナリファイルのバージョンを調べる方法が参考になります)

VBScriptだったら簡単に取得できるようでした。
参考先まるままですが、以下のコードで取得できるようです。

dim path
path="C:\Program Files\JUJO\HardKey EG Pro\FlashCtl.dll"
MsgBox GetVersion(path)
 
Function GetVersion(pathspec)
Dim fso, temp
Set fso = CreateObject("Scripting.FileSystemObject")
temp = fso.GetFileVersion(pathspec)
If Len(temp) Then
GetVersion = temp
Else
GetVersion = "バージョン情報はありません。"
End If
End Function


参考:
VBScriptでファイルのバージョン情報を取得するには - aspxの日記2009
[PR]
by Jehoshaphat | 2013-03-21 22:16 | VBScirpt,WSH,バッチ | Trackback | Comments(0)
Javaランタイム(JRE)をグループポリシーで自動展開したい
Adobe FlashPlayerやReaderをグループポリシーで展開しようとすると、入手が面倒だったり、MSIとMSPがあったりと厄介でしたが、Javaはすんなり行きました。

手順は、Active Directory を使ってネットワーク経由で Java を配布する方法に書いてくれています。

全オペレーティングシステムの Java のダウンロード一覧からWindowsオフライン用インストールファイルをダウンロードし、実行します。
すると以下のテンポラリフォルダにMSIファイルが解凍されるのでそれを、グループポリシーの[ソフトウェア]インストールで設定するだけでOKでした。
・Windows Vista,7
C:\Users\ユーザー名\AppData\LocalLow\Sun\Java\jreバージョン名\jreバージョン名.msi
・Windows XP/2000
C:\Documents and Settings\ユーザー名\ApplicationData\Sun\Java\jreバージョン名\jreバージョン名.msi


参考:
Java のサイレント (無人) インストールの方法 バッチファイルで展開する場合はこのオプションが役立ちます。
[PR]
by Jehoshaphat | 2013-03-20 22:09 | 豆知識 | Trackback | Comments(0)
Adobe Flash Playerをグループポリシーで自動展開したい
グループポリシーの[ソフトウェア]インストール
AdobeReader Xをグループポリシーで自動展開したいと思ったけど。。でAdobeReaderの展開方法を書きました。かなり厄介でした。
今回はFlashPlayerの展開方法です。

これは簡単でした。

再頒布できるインストーラファイルを手に入れようとするには、アドビ - Flash Playerライセンスから申し込みをします。

そして、Adobeから送られてくるメールにあるURLをつついて、ダウンロードページに飛びました。
FlashPlayerの場合、AdobeReaderのようにメジャーバージョンだけMSIと言うことは有りません。
すべてのバージョンがMSIが提供されているので、それをダウンロードしてグループポリシーの[ソフトウェア]インストールで設定するだけでOKでした。


スクリプトを使ってサイレントインストール(自動更新もついでに無効)
Adobeから入手した再頒布インストーラファイルには、MSI形式以外にもexe形式のものもあります。
このexeタイプのインストーラをサイレントインストールする方法ですが、Adobe Flash Player 10.1をサイレントインストールする方法 - http://pnpk.netに載ってました。
/install もしくは -install をつければいいようです。

install_flash_player_11_active_x_32bit.exe /install


また、スクリプトを使って自動更新を無効にする方法ですが、Adobe:IT 管理:Flash Player 自動更新の設定によると、インストール先(x86 %WINDIR%\system32\Macromed\Flash\ , x64 %WINDIR%\SysWow64\Macromed\Flash)に、mms.cfg というファイルを作成し、その中にパラメータと値を指定してやればいいようです。
(2012年3月末にリリースされた11.2からは バックグラウンド自動更新機能が追加されました。それまではいちいちログオン時に更新通知が開いてユーザが手動でアップデートする必要がありましたが、11.2以降はその必要はないようです。)
パラメータと値は以下のとおりです。

AutoUpdateDisable=1
SilentAutoUpdateEnable=0


もし、バックグラウンドで通知を出さず自動更新させる場合は以下のようにします。

AutoUpdateDisable = 0
SilentAutoUpdateEnable = 1


更新通知のみをユーザに通知するには以下のようにします。

AutoUpdateDisable=0
SilentAutoUpdateEnable=0
AutoUpdateInterval=0 (更新チェック間隔 デフォor-1:7日 0:OS起動時 n:n日)


ただ、FlashPlayer11はDirectX9.0以上が必要なようです。
DirectX9.0未満だと、インストール時に「d3d9.dllが見つかりません」というようなエラーになります。
AdobeのページにはXP,IE7以上しか書いてませんが、IE6でもAcitveX版Flashはインストールできました。
ちなみに、XPでもSP2を当てると、DirectX9になります。
ということで、スクリプトにXP SP2以上かどうかという条件を加える必要があるかと思います。


FlashPlayerのバージョンですが、以下のレジストリから取得できるようです。
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\CurrentVersion
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX\Version
HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerPlugin\Version


参考:
ttp://www.adobe.com/special/products/flashplayer/fp_distribution3.html
Flash Playerの自動更新間隔をカスタマイズする: べつになんでもないこと
Flash Playerのバージョンを調べる - @IT
Flash Playerをバックグラウンドで自動更新させる - @IT
Flash Player の自動更新について - 特に重要なセキュリティ欠陥・ウイルス情報
[PR]
by Jehoshaphat | 2013-03-20 21:46 | 豆知識 | Trackback | Comments(0)
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が入っています)

ただ、AdobeはMSIファイルはメジャーバージョン毎にしか出さない方針のようです。
それ以降のアップデート(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 /?
e0091163_21433756.jpg



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

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版だったためと思われます。
[PR]
by Jehoshaphat | 2013-03-19 21:41 | 豆知識 | Trackback | Comments(0)