Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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# 流行应用程序如何更新和安装?_C#_Updating - Fatal编程技术网

C# 流行应用程序如何更新和安装?

C# 流行应用程序如何更新和安装?,c#,updating,C#,Updating,我知道这个问题已经被问了很多次了,但大多数时候我都找不到我想要的答案 流行应用程序如何更新自身? 我发现了一些更新应用程序的库,但大多数情况下它们只是替换所有的应用程序文件。这样我的更新程序每次需要下载大约200mb 此外,ClickOnce也被大量使用,但在我看来,这是一种丑陋的更新和安装方式,因为GUI并不是很漂亮,您甚至无法指定在哪里安装应用程序 我知道有些应用程序也会替换安装程序,只需运行新的安装程序即可卸载旧版本并安装新版本,但这不是正确的方式 那么,像Mobirise、Discord

我知道这个问题已经被问了很多次了,但大多数时候我都找不到我想要的答案

流行应用程序如何更新自身? 我发现了一些更新应用程序的库,但大多数情况下它们只是替换所有的应用程序文件。这样我的更新程序每次需要下载大约200mb

此外,ClickOnce也被大量使用,但在我看来,这是一种丑陋的更新和安装方式,因为GUI并不是很漂亮,您甚至无法指定在哪里安装应用程序

我知道有些应用程序也会替换安装程序,只需运行新的安装程序即可卸载旧版本并安装新版本,但这不是正确的方式


那么,像Mobirise、Discord或Teamspeak这样的程序是如何更新自己的呢?

我有一套POS解决方案(C#),在4家商店工作。 这就是我为提供客户端更新所做的。 使用Google Drive上载安装程序文件+一个提及安装程序版本的文本文件,每次程序启动上载后,它都会从Google Drive下载版本文本文件,如果它与客户端拥有的软件的当前版本不匹配,Messagebox会提示提供新版本。然后,客户端可以单击Upgrade并下载安装程序文件,一旦下载的软件完全退出,它将调用运行安装程序文件的python脚本。 这不是最好的方法,但它可以工作,因为谷歌硬盘有自己的文件版本历史,这使我很容易跟踪我发送的更新。
希望我能帮助你设计出适合你的应用程序。
在windows世界中,补丁并不是一个热门话题

就像你说的-替换文件。如果是二进制文件,我真的找不到一个替代方法来完全用更新的版本替换它们。您的应用程序中是否真的有200mb已编译的二进制文件?把它切成小块不是更明智吗?这会使事情更容易更新。不,你是对的。发布文件夹的大小约为20mb,但应用程序将以何种方式安装?那么文件夹结构以后会是什么样子呢?你可能是唯一一个知道如何构造它的人。一个想法是将应用程序的关注点与DLL分离。假设你有一个只进行.rtf到.pdf转换的类——为什么不把它编译成自己的dll,让主要的二进制代码使用它呢。如果明天您决定将rtf方法重构为pdf方法,您可以简单地更新特定的dll(只要您保留签名结构),这是一个好主意,但我总觉得必须有一种更好、更专业的方法,就像其他公司那样。你知道我的意思吗?这是我前面提到的想法,但是setup.exe或setup.msi是否包含项目中使用的所有资源和dll?这也是一种丑陋的方式,因为用户必须再次点击整个安装过程。是的,msi文件拥有所有资源。不,用户不必点击整个过程,因为一旦从python调用了安装程序,您就可以使用“-i”将其设置为通过python自动安装,这样就可以有一个公共setup.exe或setup.msi来安装应用程序,并将所有DLL等放入应用程序文件夹,并在其中有另一个更新的应用程序应用程序文件夹中的主要应用程序文件?所以我有一个预先制作的应用程序文件夹,就像我们在服务器上的用户pc上创建的一样?