Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.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# 在Vista中自动更新我的.NET应用程序,无需管理员权限_C#_Vb.net_Auto Update - Fatal编程技术网

C# 在Vista中自动更新我的.NET应用程序,无需管理员权限

C# 在Vista中自动更新我的.NET应用程序,无需管理员权限,c#,vb.net,auto-update,C#,Vb.net,Auto Update,我知道有很多关于如何在.NET应用程序中实现自动更新的问题,我可能已经阅读了其中的大部分。不幸的是,据我所知,我所看到的都不符合我的情况 我正在尝试构建一个自我更新的.NET应用程序,该应用程序将在用户帐户有限的环境中运行。这里没有管理员权限。该应用程序必须在Vista和XP上运行,并且在发布时可能赢得7分。X-copy部署就可以了。我宁愿不使用单击一次 到目前为止,我已经尝试了一个系统,在这个系统中,应用程序检查清单并下载更新的二进制文件,这在开发过程中非常有效,但在安装应用程序时效果不太好。

我知道有很多关于如何在.NET应用程序中实现自动更新的问题,我可能已经阅读了其中的大部分。不幸的是,据我所知,我所看到的都不符合我的情况

我正在尝试构建一个自我更新的.NET应用程序,该应用程序将在用户帐户有限的环境中运行。这里没有管理员权限。该应用程序必须在Vista和XP上运行,并且在发布时可能赢得7分。X-copy部署就可以了。我宁愿不使用单击一次

到目前为止,我已经尝试了一个系统,在这个系统中,应用程序检查清单并下载更新的二进制文件,这在开发过程中非常有效,但在安装应用程序时效果不太好。Vista拒绝让我将文件复制到程序文件。在那之后,我尝试下载一个更新的.msi,除了msi有UAC提示之外,它还可以工作——如果用户没有具有本地管理员权限的帐户,就不能使用


一些帖子建议在AppData中运行该程序并使用x-copy方法可能有效,但我没有看到有人说他们已经尝试过了,而且确实有效。这对没有管理员权限的帐户有效吗?在我开始编写更多代码之前,有人能证明这种方法吗?

您只需要确保您正在“安装”(即复制到)非特权用户有权访问的位置

程序文件没有什么神奇之处,除了非特权用户不能写入(默认情况下)

如果您有管理员进行初始安装,则可以更改程序文件文件夹的权限,以便后续升级可以覆盖这些文件。但这并不符合事物的精神


ClickOnce的主要缺点是不常见的安装位置和原始的安装程序-如果你打算在某个奇怪的地方进行xcopy,那么你已经有了很多ClickOnce已经令人讨厌的东西,没有任何优势。

你只需要确保你正在“安装”(即复制到)非特权用户有权访问的位置

程序文件没有什么神奇之处,除了非特权用户不能写入(默认情况下)

如果您有管理员进行初始安装,则可以更改程序文件文件夹的权限,以便后续升级可以覆盖这些文件。但这并不符合事物的精神


ClickOnce的主要缺点是不常见的安装位置和原始的安装程序-如果你打算在某个奇怪的地方使用xcopy,那么你已经有了ClickOnce的很多令人讨厌的地方,没有任何优点。

尽管相当复杂,一个可行的策略是创建一个作为本地系统运行的windows服务。作为管理用户安装一次,然后让此服务下载您的更新并将其复制到program files目录


您可能还需要制作某种用户界面来显示更新过程中的进度和状态。通过WCF服务等相当容易地公开它

虽然相当复杂,但一个可行的策略是创建一个作为本地系统运行的windows服务。作为管理用户安装一次,然后让此服务下载您的更新并将其复制到program files目录


您可能还需要制作某种用户界面来显示更新过程中的进度和状态。通过WCF服务等相当容易地公开它

你有什么理由回避ClickOnce吗?它非常适合这种情况。你有什么理由回避ClickOnce吗?它非常适合这种情况。