我们想通过 GPO 将一些应用程序部署到客户端。安装包是 .exe 而不是 .msi,因此我们无法通过正常的“计算机配置\策略\软件设置\软件安装”策略进行分发。
因此,我们考虑在“Computer Configuration\Policies\Windows Settings\Scripts\Startup”下使用启动脚本。但是,该软件应该只安装一次,而不是每次启动。因此,我们认为应该将结果记录在一个文本文件中,然后在启动时读取该文件,如果该文件存在,则不要安装。目前,我们非常基本的脚本如下所示:
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),并且每次安装都会将相关行(软件名称)添加到该文件中。启动时,脚本应检查该行是否存在,如果存在则不安装,如果不存在则安装软件。