代码之家  ›  专栏  ›  技术社区  ›  Simon Gillbee

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

  •  5
  • Simon Gillbee  · 技术社区  · 15 年前

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

    有可能吗?如果是这样…怎样?

    问题澄清: 9/26/2009

    我知道在客户端下载了整个应用程序,然后直接从本地缓存文件夹启动client.exe之后,可以手动修补客户端上的dll。这不是重点。我想知道如何在 服务器 并让所有客户端在下次启动时获取新的dll。如果可能的话,我正在寻找“将DLL复制到此文件夹并编辑此文本文件”的答案。我特别喜欢 不是 希望在服务器上重新生成或重新部署Click Once安装…只需用我在IDE中编译的一个DLL手工修补它。

    4 回复  |  直到 12 年前
        1
  •  6
  •   Ben    12 年前

    我已经为此斗争了几天,这是可以做到的,但这是非常棘手的,有了这个解决方案,ClickOnce仍然扫描所有文件并显示进度条,但只下载和更新更改。

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

    注意:此过程需要使用要升级的Click Once部署的精确副本进行。

    在“应用程序文件”文件夹中

    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文件夹* 注意:这个步骤不是严格必要的,只是保持备份文件的相关性。

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

        2
  •  2
  •   Alon Amsalem    14 年前

    我也有同样的问题。 我认为您需要将特定文件复制到ClickOnce文件夹。 使用mageui编辑.manifest和.application文件。 在两个文件中前进版本号。 不确定这一点,但是客户端的clickOnce应该下载已更改的文件。

        3
  •  1
  •   Johannes Rudolph    15 年前

    ClickOnce将为您确定更新的DLL,您的客户机不必下载完整的150MB,只需下载更新的DLL。唯一的缺点是你仍然需要上传所有的150MB。

    我的客户有一个ClickOnce应用程序可以这样工作,大约40MB始终保持不变。无需额外工作。

        4
  •  0
  •   mattythomas2000    15 年前

    假设您在客户机系统的实时环境中工作,那么您应该能够通过将DLL复制到安装文件夹中以前的DLL来替换它。我认为在Windows XP上安装ClickOnce的位置是C:\Documents and Settings\UserProfile\Local Settings\Apps。