1

GPO を介していくつかのアプリケーションをクライアントに展開したいと考えています。インストール パッケージは .msi ではなく .exe であるため、通常の「コンピュータの構成\ポリシー\ソフトウェアの設定\ソフトウェアのインストール」ポリシーを使用して配布することはできません。

したがって、「コンピューターの構成\ポリシー\Windows の設定\スクリプト\スタートアップ」の下にあるスタートアップ スクリプトを使用することを考えました。ただし、ソフトウェアは起動ごとにインストールするのではなく、1 回だけインストールする必要があります。したがって、結果をテキスト ファイルに記録し、起動時に読み取り、ファイルが存在する場合はインストールしないようにする必要があると考えました。現時点では、非常に基本的なスクリプトは次のようになります。

IF EXIST "c:\vcredist_2010_x86.txt" GOTO END
IF EXIST "c:\vcredist_2010_x64.txt" GOTO END

:32-bit
if exist %SystemRoot%\SysWOW64 goto 64-bit
\\servername\sharename\C++Redist\2010\vcredist_2010_x86.exe /passive /norestart
echo "Microsoft Visual C++ 2010 Redistributable - x86" > "c:\vcredist_2010_x86.txt"
goto END

:64-bit
\\servername\sharename\C++Redist\2010\vcredist_2010_x64.exe /passive /norestart
echo "Microsoft Visual C++ 2010 Redistributable - x64" > "c:\vcredist_2010_x64.txt"

:END

問題なく動作しますが、少し改良したいと思います。テキスト ファイルを 1 つだけ (つまり、c:\software-dist.txt) に書き込み、インストールごとに関連する行 (ソフトウェア名) をこのファイルに追加するとよいでしょう。起動時に、スクリプトは行が存在するかどうかを確認する必要があります。存在する場合はインストールせず、存在しない場合はソフトウェアをインストールします。

4

1 に答える 1

3

このようなもの?

:CheckOS
if exist %systemdrive%\"Program Files (x86)" (
set bit=x64
) else (
set bit=x86
)

:Check1
for /f "delims=" %%a in (C:\software-dist.txt) do (
if "%%a"=="softwarename" goto Check2
)

\\servername\sharename\vcredist_2010_%bit%.exe /passive /norestart
echo softwarename >>C:\software-dist.txt

:Check2
for /f "delims=" %%a in (C:\software-dist.txt) do (
if "%%a"=="Microsoft Visual 2008" goto :Check3
)

\\servername\sharename\C++Redist\vcredist_2008_%bit%.exe /passive /norestart
echo Microsoft Visual 2008 >>C:\software-dist.txt

:Check3
for /f "delims=" %%a in (C:\software-dist.txt) do (
if "%%a"==Microsoft Visual C++ 2005 Redistributable %bit% goto :Check4
)

\\servername\sharename\2005\vcredist_2005_%bit%.exe /passive /norestart
echo Microsoft Visual C++ 2005 Redistributable %bit% >>C:\software-dist.txt

:Check4
for /f "delims=" %%a in (C:\software-dist.txt) do (
if "%%a"==Microsoft .NET Framework 4 goto :END
)

\\servername\sharename\dotNet4.exe
echo Microsoft .NET Framework 4 >>C:\software-dist.txt

:END

これにより、単一の txt ファイルがチェックされ、ソフトウェアの名前の行が含まれているかどうかが確認されます。存在する場合は終了し、そうでない場合はインストールし、終了時にリストに追加します。

于 2012-10-26T12:36:10.927 に答える