如何在ClickOnce安装中只更新一个DLL?

Sim*_*bee 5 clickonce

我正在开发一个大型的一次点击应用程序(150MB,> 200个DLL),作为交互式调试过程的一部分,我想只更新1个DLL并重新启动应用程序,而无需重新构建和重新部署整个应用程序.

那可能吗?如果是这样......怎么样?

问题澄清: 2009年9月26日

我知道可以在下载整个应用程序后手动修补客户端上的DLL,然后直接从本地缓存文件夹启动客户端.EXE.这不是重点.我想知道如何在服务器上更改/添加DLL,并让所有客户端在下次启动时获取新的DLL.我正在寻找一个"将DLL复制到此文件夹并编辑此文本文件"的答案,如果可能的话.我特别希望在服务器上重建或重新部署单击一次安装...只需用我在IDE中编译的单个DLL手动修补它.

Ben*_*Ben 6

我已经与它斗争了几天,它可以完成,但它很繁琐,使用此解决方案ClickOnce仍会扫描所有文件并显示进度条,但只下载并更新更改.

以下是我编写的应用此修补方法的过程...

请注意,此过程需要使用要升级的Click once部署的精确副本进行.

在Application Files文件夹中......

  1. 使用mageui打开.exe.manifest(假设VS2010版本为3.5或更高版本)
  2. 更改版本号

  3. 替换已修补的文件注意:文件使用文件名重命名.deploy例如,Control.DLL变为control.DLL.Deploy

  4. 使用PFX文件签名并保存文件

在根路径中

  1. 使用mageui(3.5或更高版本)打开.application文件
  2. 更改版本号
  3. 更改所需的最低版本号
  4. 选择上面修改的exe.manifest
  5. 签名并保存文件

将.application复制到Application Files文件夹* 注意:此步骤不是必需的,只是保持备份文件相关.

现在可以将清单文件和修补库复制到您的部署环境中.