指定自注册的顺序

请注意,无法使用 SelfRegModulesSelfUnRegModules 操作指定安装程序注册或取消注册自注册 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 表

目录 Directory_Parent DefaultDir
TARGETDIR SourceDir
myFolder TARGETDIR myFolder|My Folder

 

CustomAction 表

操作 类型 目标
mydllREG 3170 myFolder "[SystemFolder]msiexec" /y "[#mydll]"
mydllUNREG 3170 myFolder "[SystemFolder]msiexec" /z "[#mydll]"

 

InstallExecuteSequence 表(部分)

操作 条件 序列
SelfUnregModules 2200
mydllUNREG $myComponent=2 2201
RemoveFiles 3500
InstallFiles 4000
SelfRegModules 6500
mydllREG $myComponent>2 6501