【问题标题】:How to count the number of times a ClickOnce program has been installed/updated?如何计算 ClickOnce 程序的安装/更新次数?
【发布时间】:2010-10-02 02:46:30
【问题描述】:

计算 ClickOnce 部署的程序安装或更新次数的最佳方法是什么?此外,是否有可能以某种方式跟踪 正在安装或更新它(例如,地理上)?

【问题讨论】:

    标签: deployment clickonce


    【解决方案1】:

    ClickOnce 有一个可供您使用的 API。在应用程序启动时检查ApplicationDeployment.IsFirstRun 的值并在那里执行您需要执行的操作。

    【讨论】:

    • 我在哪里可以做到这一点?是在Main()吗?
    • 是的,您可以在调用 Application.Run(new Form1()) 之前的某个时间在 Main() 中调用它。也很抱歉延迟回复!
    【解决方案2】:

    我的 ClickOnce 应用程序需要登录,因此很容易从他们的注册信息和 IP 地址中分辨出谁在使用该程序。

    另一种方法是检查服务器日志以了解您的软件包是否命中。如果您将其设置为在每次执行时检查更新,那么它每次都会点击 .application 并且当有更改时,点击包。

    【讨论】:

      【解决方案3】:

      MSDN 上有一些信息Administering ClickOnce Deployments

      企业使用 ClickOnce 的一个常见要求是需要跟踪哪些用户已启动或安装了哪些应用程序。这方面的一个例子是查询用户最近启动的应用程序的特定版本。此类跟踪可能需要在部署服务器上进行,以避免需要监控分布在网络上的大量客户端机器。在客户端进行跟踪还需要自定义软件开发和安装,因为 ClickOnce 运行时不会公开任何挂钩来插入自定义启动事件跟踪解决方案。

      为了跟踪哪些用户从服务器端安装或启动了哪些应用程序,您需要验证用户的身份并检测和拦截文件下载请求。你做这些事情的能力受到许多因素的影响。

      一个关键因素是使用的网络协议。 ClickOnce 支持 HTTP(和 HTTPS)或网络文件共享(UNC 路径)。 HTTP 提供了最大的灵活性,因为您可以轻松地拦截服务器上的入站文件请求。您仍然可以使用 Windows 文件审核和事件日志实现一定程度的跟踪,但是这些选项很难设置。

      【讨论】:

        【解决方案4】:

        可能最好的方法是在您的网络服务器上使用日志记录工具。将下载记录到 .application 等(或者可能是实际的 dll/exe 文件,因为 .application 可能会被用于自动更新检查)。

        也许通过 http 模块,但任何网络服务器日志工具都应该足够了。您可以大约从 IP 中推断出位置(但您需要找到自己的提供商)。

        但是,ClickOnce 是被动的 - 无法向其中注入额外的代码。您也许可以在第一次运行时运行一些代码,但是...

        【讨论】:

          【解决方案5】:

          托管记录请求者 IP 地址的 Web 服务。在启动时调用应用程序中的 Web 服务。位置与 IP 地址相关联,您可能可以从那里弄清楚。 :)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-10-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多