Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有办法更改已安装的单击一次应用程序的更新URL_C#_.net_Clickonce - Fatal编程技术网

C# 是否有办法更改已安装的单击一次应用程序的更新URL

C# 是否有办法更改已安装的单击一次应用程序的更新URL,c#,.net,clickonce,C#,.net,Clickonce,我们从2006年开始使用click once,现在需要更改更新位置,这在以前发生过一次,但我们刚刚卸载并重新安装,这将是一个问题 中提供了一个解决方案,但是,当我们今年前尝试(.NET 2.0)时,该解决方案失败,应用程序指出更新的URL和客户端的URL不匹配,这增加了安全风险,并阻止了更新的发生和启动 该属性只能在应用程序清单中更改,但我不确定在已部署的应用程序中实际更改该属性的方法 假设当前版本为5,部署位置为apps.mycompany.com,新位置为clickonce.mycompan

我们从2006年开始使用click once,现在需要更改更新位置,这在以前发生过一次,但我们刚刚卸载并重新安装,这将是一个问题

中提供了一个解决方案,但是,当我们今年前尝试(.NET 2.0)时,该解决方案失败,应用程序指出更新的URL和客户端的URL不匹配,这增加了安全风险,并阻止了更新的发生和启动

该属性只能在应用程序清单中更改,但我不确定在已部署的应用程序中实际更改该属性的方法

假设当前版本为5,部署位置为apps.mycompany.com,新位置为clickonce.mycompany.com,我想使用如下流程

  • 使用5.2版在clickonce.mycompany.com上发布应用程序
  • 在apps.mycompany.com发布版本为5.1的应用程序,该版本在应用程序启动时具有引导代码,可更改应用程序清单以更改URL

  • 通过这个过程,客户端将连续获得两个新的更新。感染,如果我将5.1发布到这两个位置,它应该可以工作。

    这种问题可以通过让应用卸载自己,然后重新安装自己来解决。我以前做过,虽然我是从网络位置安装的,而不是url,但应该是一样的

    关于此解决方案的msdn。转到“如何以编程方式卸载单击一次应用程序并安装新版本”一节

    您还可以查看解决方案的其他版本

    这是可行的,但有点棘手。这是我所知道的解决这类问题的唯一方法

    编辑如果你使用了那篇文章中的信息,这里有两件事需要注意

  • 确保正在卸载自身的应用程序的更新不是可选的。您需要将所需版本设置为当前部署的版本。否则,“还原”选项可用,并且是“卸载”对话框的默认选项,应用程序不会自行卸载
  • 确保在DeploymentUtils类中的GetUninstallString方法中,将它要查找的DisplayName从“TestCertExp\u CSharp”更改为应用程序的名称

  • 使用这些命令行

    mage.exe -Update setuptest_1_0_0_2.application -ProviderUrl http://127.0.0.1/setuptest/setuptest.application
    
    mage.exe -Update setuptest_1_0_0_2.application -AppManifest setuptest_1_0_0_2\setuptest.exe.manifest
    
    mage.exe -Sign setuptest_1_0_0_2.application -CertFile setuptest_TemporaryKey.pfx -Password mypassword
    
    mage.exe -Update setuptest.application  -ProviderUrl http://127.0.0.1/setuptest/setuptest.application
    
    mage.exe -Update setuptest.application -AppManifest setuptest_1_0_0_2\setuptest.exe.manifest
    
    mage.exe -Sign setuptest.application -CertFile setuptest_TemporaryKey.pfx -Password mypassword
    

    选中此项:

    听起来是执行此操作的一种非常有趣的方式。不过,我有一个问题,这个过程如何处理存储的用户文件和应用程序设置?这是我们不希望卸载和重新安装的主要原因,因为它们在过程中丢失。我想一种选择是让升级过程将资源复制到一个临时位置,并在安装新版本后让新版本重新读取它们?Holly cow,这是一篇简洁的文章,解释了我不知道的3.5 SP-1和2.0 SP-1的一些更新。当我们上次尝试更改时,所有客户端都在使用2.0和XP,而Vista当时甚至还没有推出。幸运的是,现在Win-7上的每个人都有.NET 4.0,应用程序的目标是3.5-SP1。我开始认为,由于微软提供了这些修复程序,我可能可以很简单地用新的URI发布一个更新并完成它。非常感谢您的帮助,在接下来的几周里,我将在一个测试环境中尝试这一点。有一些事情需要注意。查看我的更新答案。