0

我需要更新使用自注册 DLL(通过 注册CESelfRegistered)的应用程序。在注册过程中,DLL 会将一些将来使用的路径写入注册表。

现在的问题是在我的新 DLL 中存储的路径不同。并且由于 DLL 在设备内存中处于活动状态,因此在更新过程中会在注册期间调用 OLD DLL 文件。因此,更新完成并重新启动设备后,新的 DLL 仍会读取旧设置。

避免这种行为的正确程序是什么?

4

1 回答 1

1

要更新使用 DLL 的正在运行的应用程序,您必须编写一个安装程序来杀死或结束正在运行的 exe,卸载包含 DLL 的 exe,然后安装新的 exe 和 dll。

例如,您可以编写一个 cab 文件 setup.dll,它将停止/终止 exe 并在 install_init 中取消注册 DLL。可能添加代码以删除旧的注册表项。CE 安装 DLL 是在 CAB 安装期间在安装和卸载初始化之前和之后运行代码的选项。

您还可以在执行这些 exe 和 dll 替换(包括 exe 杀戮等)的应用程序中编写代码。然后在启动过程中包含此更新程序 exe 并运行一次。

如果尚未安装应用程序,则不能依赖从 ce_setup.dll 中启动应用程序。

有关ce_setup.dll 的说明,请参见http://msdn.microsoft.com/en-us/library/aa924308.aspx

于 2013-05-08T03:53:00.213 回答