将 DLL 文件更新部署到 Win7 客户端的最佳方法

将 DLL 文件更新部署到 Win7 客户端的最佳方法

我们处于 Windows 7 / Server 2008 R2 域环境中。我们有一个 .NET 应用程序,其中包含许多用于不同 UI 和其他功能的内部库。我们从共享中部署它,其中为每个“版本”创建一个目录,其中包含最新版本号。有时,有些部门需要根据他们的特定需求对应用程序进行一些调整,并且他们需要在下一个版本发布之前紧急进行更改。我们可以通过向他们提供一些包含所请求更改的自定义 DLL 文件来实现这一点。我正在尝试设计一种最可靠和最有效的方法,让我们的客户端机器自动检查并复制这些“自定义”文件。我希望以一种最有效、最可靠、最集中管理且对客户端开销最少的方式来做到这一点。最好,当我们有自定义文件要部署时,我们希望所有客户端在我们将它们放在共享上后 24 小时内将它们复制下来。它们将进入当前网络发布目录的子文件夹,名为“自定义”或类似名称。我们目前没有 SCCM,所以我正在考虑以下选项:

  1. 为用户提供的批处理文件登录脚本将检查网络目录并使用 robocopy 或 xcopy 复制(覆盖)本地文件。这将要求用户注销并重新登录,因此获取任何自定义文件可能会有延迟。用户将有一个简单、可靠的方法来触发它,这将是一个优点。

  2. 通过组策略首选项配置的计划任务,每天检查网络目录几次以查找任何自定义文件。这可能比用户登录脚本更快地获取文件,但我没有使用 GPP 计划任务项目的经验。它是否可靠且易于设置和维护?同样,此任务将运行批处理脚本来检查网络上的文件并使用 /xo 选项启动 robocopy。如果我们将任何文件放在自定义目录中,我们将假设它们是需要的,无论版本如何。只需检查文件日期就可以了,这样一旦它们到位,就不会一遍又一遍地重新复制。

  3. 计划任务与上述相同,但根据事件日志条目触发。这可靠吗?我从未尝试过。找到一个指示应用程序刚刚启动(或关闭)的事件触发器,然后立即复制文件可能会很有利,这样用户的工作被打断的可能性就更小了。

  4. 我知道还有一个用于管理/复制文件的组策略首选项。我认为在这种情况下管理起来会很麻烦,因为可能会同时处理多个文件,涉及应用程序的多个版本。

  5. 我还考虑过使用 Powershell 脚本,它可以做一些有趣的事情,比如比较实际的 DLL 文件版本等,但这可能需要更多的资源开销(运行速度更慢),而且实际上做的比需要的还多。

关于什么方法最有效还有其他想法吗?最简单的答案(用户登录脚本)真的是最好的吗?

答案1

我最终选择了选项 1,即用户登录脚本,并且该脚本已经可靠地运行了一段时间。我本来想在这里发布整个脚本,但是它充满了内部应用程序详细信息,这使得它对于一般用途来说几乎毫无用处。最有趣的细节是我们使用 wmic 获取本地安装的应用程序的内部版本号,并使用它来引用我们部署服务器上的正确版本目录。此代码设置了一个名为 Version 的变量以匹配 wmic.exe 返回的值。

set "myfile=c:\\progra~2\\%AppFolder%\\AppName.exe"

for /f "tokens=*" %%f in ('wmic datafile where "name='%myfile%'" get version /value ^| findstr "="') do set "%%f"

相关内容