计算 ClickOnce 部署的程序安装或更新次数的最佳方法是什么?此外,是否有可能以某种方式跟踪谁在安装或更新它(例如,地理上)?
5 回答
ClickOnce 有一个您可以使用的 API。在应用程序启动时检查ApplicationDeployment.IsFirstRun的值并在那里执行您需要执行的操作。
我的 ClickOnce 应用程序需要登录,因此很容易从他们的注册以及他们的 IP 地址中分辨出谁在使用该程序。
另一种方法是检查服务器日志以查找对您的包的命中。如果您将其设置为在每次执行时检查更新,它每次都会点击 .application 并且当有更改时,点击包。
有一些关于 MSDN Administering ClickOnce Deployments的信息
企业使用 ClickOnce 的一个常见要求是需要跟踪哪些用户已启动或安装了哪些应用程序。这方面的一个例子是查询用户最近启动的应用程序的特定版本。可能需要在部署服务器上进行此类跟踪,以避免需要监视分布在网络上的大量客户端机器。在客户端进行跟踪还需要自定义软件开发和安装,因为 ClickOnce 运行时不会公开任何挂钩来插入自定义启动事件跟踪解决方案。
为了跟踪哪些用户从服务器端安装或启动了哪些应用程序,您需要验证用户的身份并检测和拦截文件下载请求。你做这些事情的能力受到许多因素的影响。
一个关键因素是使用的网络协议。ClickOnce 支持 HTTP(和 HTTPS)或网络文件共享(UNC 路径)。HTTP 提供了最大的灵活性,因为您可以轻松地拦截服务器上的入站文件请求。您仍然可以使用 Windows 文件审核和事件日志实现某种程度的跟踪,但是这些选项很难设置。
可能最好的方法是在您的 Web 服务器上使用日志记录工具。将下载记录到 .application 等(或者可能是实际的 dll/exe 文件,因为 .application 可能会被用于自动更新检查)。
也许通过 http 模块,但任何网络服务器日志工具都应该足够了。您可以从 IP 中大致推断出位置(但您需要找到自己的提供商)。
但是,ClickOnce 是被动的 - 无法向其中注入额外的代码。你也许可以在第一次运行时运行一些代码,但是......
托管记录请求者 IP 地址的 Web 服务。在启动时调用应用程序中的 Web 服务。位置与 IP 地址相关联,您可能可以从那里弄清楚。:)