我有一个ClickOnce WPF应用程序,它是从网站上的页面启动的。用于调用应用程序的URL参数告诉应用程序使用什么IP地址进行通信,以及一些认证信息。如果从“开始”菜单而不是浏览器启动应用程序,则此“配置”信息将写入注册表以供后续应用程序执行。ClickOnce应用程序部署困境
多个Web服务器可以使用同一个网站(但ClickOnce应用程序使用不同的数据)。
让我们说我有2个网站,A & B,它们都有我的ClickOnce应用程序(v1.0.0.0)的相同版本。
我可以从网站A浏览该网站,并使ClickOnce应用程序下行,安装并执行。到目前为止没有问题。
如果我现在浏览到网站B并尝试从浏览器启动ClickOnce应用程序,则会显示一个错误对话框,指出“您不能从此位置启动应用程序TestApplication,因为它已从其他位置安装”。有一个确定和详细信息按钮,详细信息按钮给出了一个不错的大日志文件,告诉我应用程序是从网站A安装的。
如果我去修改存储在注册表中的配置信息以告诉应用程序与网站B,然后从开始菜单启动应用程序,它运行良好,与网站通信以检索特定于该主机的数据。手动更改注册表设置不是可接受的解决方案。
如果我卸载应用程序,然后转到网站B,应用程序被下载,安装并运行正常,但这不是一个真正可接受的解决方案。
我的问题是,我希望用户能够从多个不同的网站从浏览器启动应用程序,而不会得到这个“你不能启动应用程序...”的问题。
我不想为每个不同的网站/网络服务器更改应用程序名称/标识。该应用程序作为较大的软件包的一部分推出到网站主机上,该软件包是通用的,即不是唯一的或适合于单独的机器。
我已经看到有关通过更改应用程序名称/ ID将同一应用程序的多个版本部署到单个客户端机器的问题/答案,但这不是真正的问题。
我想我的问题是,我该如何使它所以我的应用程序可以从网页上推出不同的主机它已经从部署的一个上。
使用注册表存储信息的原因是,它可以很容易地存储在每个用户的基础上,即在HKEY_CURRENT_USER下,而不是使用数据文件,并且必须把它放在用户指定的位置。 无论如何,可以提供一个UI元素来允许设置主机进行通信 - 但正如您所观察到的那样,这对于尝试从不同的Web服务器“启动”应用程序的问题没有帮助。 – LeeC 2009-11-30 14:04:57