2009-09-23 64 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文件。

相關問題