指定自注册的顺序
请注意,无法使用 SelfRegModules 和 SelfUnRegModules 操作指定安装程序注册或取消注册自注册 DLL 的顺序。 这些操作将注册 SelfReg 表中列出的所有模块。 安装程序不会自注册 .exe 文件。
要指定安装程序注册或取消注册模块的顺序,必须为每个模块使用两个自定义操作。 一个用于 DllRegisterServer 的自定义操作,另一个用于 DllUnregisterServer。 然后,必须在 InstallExecuteSequence 表中要注册或取消注册 DLL 的序列点上创作这些自定义操作。
以下示例说明了如何创作数据库,以在操作序列中的特定点计划 DLL 的自注册。
File 表(部分)
文件 | Component_ | FileName | 序列 |
---|---|---|---|
mydll | myComponent | Mydll.dll | 13 |
Component 表(部分)
组件 | ComponentId | Directory_ | KeyPath |
---|---|---|---|
myComponent | {a GUID} | myFolder | mydll |
目录 | Directory_Parent | DefaultDir |
---|---|---|
TARGETDIR | SourceDir | |
myFolder | TARGETDIR | myFolder|My Folder |
操作 | 类型 | 源 | 目标 |
---|---|---|---|
mydllREG | 3170 | myFolder | "[SystemFolder]msiexec" /y "[#mydll]" |
mydllUNREG | 3170 | myFolder | "[SystemFolder]msiexec" /z "[#mydll]" |
操作 | 条件 | 序列 |
---|---|---|
SelfUnregModules | 2200 | |
mydllUNREG | $myComponent=2 | 2201 |
RemoveFiles | 3500 | |
InstallFiles | 4000 | |
SelfRegModules | 6500 | |
mydllREG | $myComponent>2 | 6501 |