附加DLL的备份
文章信息
详细描述
第三方程序的开发人员需要通过存储在程序私有目录中的backup_registration.xml来备份和恢复程序。如果主程序设计为可以通过安装附加的DLL组件来增加扩展其功能,那么也要注册以便备份。
解决方案
如果要安装的DLL的UID预先知道,那么DLL的备份注册可以在主程序的pkg包里完成,如下:
"DLL1BinaryBackup.xml"
- "!:\private\10202D56\import\packages\<DLL1_UID>\backup_registration.xml"
在这样的情况下,附加的DLL可以作为一个普通的sisx包进行安装。这样一个最小的系统备份定义(备份这个二进制文件)就足以应付这个DLL了。
查看File:DLLBackupExample.zip即可看到这个实例pkg的定义
我们也可以通过一个局部升级(PU)SIS包来安装这个DLL,这样的情况下我们通常不知道这个DLL的UID。这个升级包定义了附加dll或内嵌sis文件的备份注册文件。
插件生成文件的备份
除了备份二进制插件外,我们也需要备份由插件生成的文件(如指定插件的设置)。
任何程序私有目录中的backup_registration*.xml都指明了需要备份的文件内容。backup_registration.xml被看作是程序主要的备份文件。同时其他只提供附加文件的文件不建议放在主备份程序中。
查看File:BackupOfPluginComponents.zip里的示例pkg定义。
MainApp.pkg:主程序的打包文件,有自己的backup_registration.xml文件
MyPrivateFileDLL1_Upgrade.pkg:主程序的升级包。包括以内嵌SIS出现的DLL1插件。
MyPrivateFilesDLL1_Upgrade.pkg文件的重要代码为:
"<DLL1 Path>\DLL1PrivateFileBackup.xml"
- "!:\private\<APP_UID>\backup_registration1.xml"
拷贝附加的backup_registration1.xml文件到主程序的私有目录中。
backup_registration1.xml可以定义所有需要备份的附加文件,如
<include_file name="c:\private\<APP_UID>\backup\<DLL_UID>\DLL1File1.txt" />
<include_file name="c:\private\<APP_UID>\backup\<DLL_UID>\DLL1File2.dat" />
...
任何需要备份的附加文件都要存放在公开目录或者在主程序的私有目录下。
注意
文件名“DLL1BinaryBackup.xml”只用来区别主程序和附加DLL。当在pkg文件中定义备份注册文件,目标名需要为如下格式: backup_registration*.xml
如果你试图将主程序的backup_registration.xml文件升级为包含有附加文件/目录的PU-Type SIS包将会导致无效。


(no comments yet)