2009-09-23 59 views
0

我正在创建一个基于msi的安装程序(使用InstallShield),该安装程序具有自定义操作以启动嵌套安装。自定义操作的类型为23,源字段指的是位于源媒体上的第二个msi,目标字段包含“ALLUSERS = [ALLUSERS] ADDLOCAL = ALL”。自定义操作在OnInstallFilesActionAfter操作之后在InstallExecuteSequence中启动,条件为& FEATURE = 3,以便在安装特定功能时安装它。如何在修改已安装的产品时防止msi错误2335?

在进行全新安装时,自定义操作得到执行,第二个msi被正确安装。在没有提到的功能的情况下进行安装并在之后进行“修改”安装时,如果选择了该功能,则会出现msi错误2335。错误显示在第二个msi的PublishProduct操作过程中,并且确切的错误消息是“DEBUG:错误2335:路径:C:\ WINDOWS \ Installer \不是{local-setup-folder}的父项”(其中{ local-setup-folder}替换为安装第二个msi所在的文件夹)。

我想这个错误来自于这样一个事实,即在运行“修改”时,操作23的源文件夹被设置为缓存.msi文件的文件夹,而不是最初安装产品的文件夹。我怎样才能防止出现错误2335?

回答

0

我终于通过创建要安装的.msi文件的变换来解决这个问题。该转换将添加自定义动作类型51以将ParentOriginalDatabase属性设置为[SOURCEDIR]mainproduct.msi,其中mainproduct.msi是父安装的.msi文件。自定义操作作为PublishProduct之前的操作插入到InstallExecuteSequence中。丑,但它的作品。

PublishAction操作中的错误2335来自于以下事实:ParentOriginalDatabaseOriginalDatabase属性必须在相同或直接的子文件夹中指定.msi文件。

相关问题