When we try to make use of Multiple language merge-module, with following scenario: - Merge-module contains all the files in it's CAB. - It contains transform with name MergeModule.LANG#### in sub-storage. - The transform remove some files.
A error message can be observed like this: "light.exe : error LGHT0001 : Failed to fetch a File row from the database that was merged in from a module" The error is because file records are missing from temporary generated database (function "MergeModules", in Binder.cs) For merging the Module to temporary databse, OpenModule (IMsmMerge2::OpenModule) function is used. Which takes care language transform. Whereas, for create the list of FileCollection (fileRows variable), Database object is been used in function "ProcessMergeModules" in file Binder.cs. when it is loaded as Database, all the files listed in File table gets enlisted. Even if transform is supposed to remove them. As a solution to this, I created a blank MSM, and merged the module to it. Then saved that MSM in temp location and made that a source for rest of the processing. Since ModuleOpen is been used, new MSM was a transformed MSM. But cleaning this up becomes difficult, since I am not sure about the requirement of life of this MSM by binder. May be "ProcessMergeModules" be corrected to create the correctly populate the "fileRows" variable. -- View this message in context: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Multiple-language-merge-modules-tp4950141p4950141.html Sent from the wix-devs mailing list archive at Nabble.com. ------------------------------------------------------------------------------ _______________________________________________ WiX-devs mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/wix-devs
