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

Reply via email to