我正在开发一个大型的一次点击应用程序(150MB,> 200个DLL),作为交互式调试过程的一部分,我想只更新1个DLL并重新启动应用程序,而无需重建和重新部署整个应用程序
这可能吗?如果是这样......怎么样?
问题澄清: 9/26/2009
我知道可以在下载整个应用程序后手动修补客户端上的DLL,然后直接从本地缓存文件夹启动客户端.EXE。这不是重点。我想知道如何在服务器上更改/添加DLL 并让所有客户端在下次启动时获取新的DLL。我正在寻找一个“将DLL复制到此文件夹并编辑此文本文件”的答案,如果可能的话。我特意做 NOT 想要在服务器上重建或重新部署一次性安装...只需用我在IDE中编译的单个DLL手动修补它。
答案 0 :(得分:6)
我已经与它斗争了几天,它可以完成,但它很繁琐,使用此解决方案ClickOnce仍会扫描所有文件并显示进度条,但只下载并更新更改。
以下是我编写的应用此修补方法的过程...
请注意,此过程需要使用要升级的Click once部署的精确副本进行。
在Application Files文件夹中......
更改版本号
替换已修补的文件注意:文件使用文件名重命名.deploy例如。 Control.DLL成为control.DLL.Deploy
在根路径中
将.application复制到Application Files文件夹* 注意:此步骤并非严格必要,只是保持备份文件的相关性。
现在可以将清单文件和已修补的库复制到您的部署环境中。
答案 1 :(得分:2)
我在这里遇到同样的问题。 我认为您需要将特定文件复制到clickOnce文件夹。 使用MageUI编辑.manifest和.application文件。 提高两个文件中的版本号。 不确定这一点,但客户端的ClickOnce应该下载已更改的文件。
答案 2 :(得分:1)
ClickOnce将为您确定更新的dll,您的客户不必下载完整的150MB,而只需下载更新的dll。唯一的缺点是你仍然需要上传所有150MB。
我的客户的ClickOnce应用程序以这种方式运行,大约40MB始终保持不变。无需额外的工作。
答案 3 :(得分:0)
假设您在客户端系统上的实时环境中工作,您应该能够通过将dll复制到安装文件夹中的前一个dll来替换它。我认为Windows XP上的clickonce安装位置是C:\ Documents and Settings \ userprofile \ Local Settings \ Apps。