我该怎么做? 是否有任何理由我不应该?
我有一个WinForm的ClickOnce应用程序有大约DLL中13mbs是不是我的,所以我就没有必要/能力在任何定期更新他们。
的DevExpress(3),微软的ReportViewer,微软SQL复制。 微软SQL SMO。
没有他们,包括在我的ClickOnce应用程序我的整个节目排在约1.5mbs并用具有有限的VPN连接我们的远程站点我真的需要得到它在那里。 我不能在我们的网络发送15mbs给所有用户每次我做一个小的应用程序的变化。
谢谢
更新CLARITY
为了澄清; 我不想安装我的DLL来使用 ClickOnce GAC中。 ClickOnce是什么我主要的应用程序需要使用。 我想从ClickOnce的应用程序中删除的DLL是13mbs,并让他们安装使用上的所有本地系统。
如果我可以离开GAC,梦幻般的做到这一点。 我只需要我的主要应用三聚体这样的更新。
扩大对@卡纳德的回应...
您的dll的13MB将只由用户自己安装的应用程序在第一时间下载。 这就是ClickOnce的的一大优势,用户只需下载已更改的文件。
然而,令人困惑的是,ClickOnce的进步总是对话框显示应用程序的整体大小 ,即使它可能不会下载整个应用程序。 我做了广泛的测试,以确保这种情况时,用一个带宽监控它证明了自己。
最后,如果你可以控制你的Web服务器,你可能要考虑启用压缩你的ClickOnce应用程序。 它有助于减少下载的大小相当。 压缩是一种痛苦成立的,但这篇文章应该让你开始。 然而,再次压缩后的大小并没有反映在ClickOnce的进度对话框。
最好的事情要做的仅仅是忽略显示出来的ClickOnce的进度对话框数量:)
的ClickOnce无法安装文件到GAC。 你需要创建一个MSI或提升的权限来做到这一点。
一般来说,你应该避免GAC,除非它解决特定的问题。 是安装尺寸更下载 - 使用50K调制解调器,或高速局域网的用户比的ClickOnce痛?
克里斯·塞尔斯对为什么要一个伟大的文章避免了GAC ,还有其他各种堆栈溢出职位上它-看到这里 , 这里和这里 。
在这一天结束时,你需要评估利弊,决定什么是最好的行动过程。
以下是我在过去所做的和它的工作很适合我。 我有ClickOnce的应用程序寻找一些在GAC这些依赖关系。 事实上,它会检查每一次加载应用程序。 我用一个简单的文件是否存在,看是否依赖性是在GAC。 如果依赖丢失我显示你是缺少一些依赖,并就如何解决它一些指令的消息。 于是我掏出并下载一个自解压exe,它安装在GAC中相关性。 这是一个小鲁贝Goldbergen,但它一直奇怪很适合我。
我只会放在GAC的事情,将是静态的可预见的未来第三方控件等。
我有一个漂亮的胖客户端,包括MS报告,Infragistics的,和SMO等等,我们一个星期部署一个或使大约3.5MB。 我们的许多用途是非常遥远和使用数据卡,你上网。
虽然其他的答案是正确的,因为ClickOnce的只会下载一次的DLL(如果他们没有改变),以解决您的直接问题,如果你将要安装的dll到ClickOnce的过程之外海关总署,不想下载这些通过ClickOnce的DLL文件都可以做到以下几点。
将其设定为ClickOnce->应用程序文件设置中prequisite排除ClickOnce的下载这些DLL。
当你这样做时,ClickOnce的运行时将下载前检查GAC并确保这些DLL存在。
据谷歌没有与任何这里。
你将不得不寻找替代性的安装工具,如创建一个MSI安装程序。 这听起来很奇怪,但我的第一个想法来解决安装规模将有两个安装程序 。 一到安装依赖到GAC的用户只需要运行一次,另一个安装程序(我猜可能使用的ClickOnce)安装实际的应用。 使用这种方法,你可以在理论上依靠较小的ClickOnce部署今后所有应用程序更新。
你怎么知道,如果每次它下载完整的15 MB。 ClickOnce的对话框总是说,但它实际上并没有下载的所有文件只有那些散在清单的变化。 给定有办法从不同的网址更新检查一个CD部署。 这样,您就可以从首次一张CD,然后在应用程式安装可以从您发布的站点只有自行更新。