From: Rob M. <ro...@us...> - 2004-12-31 02:28:08
|
Well, that is a very simple (and silly) bug. I'm not connected right now so I don't know when it was introduced, but I am almost positive that this worked at one point in time. Anyway, as you noted the bug is that "MergeModule.CAB" is used instead of "MergeModule.CABinet". You can fix that in your own copy by replacing src\wix\Decompiler.cs,718 and 719 to use the right name. It'd also be great if you wouldn't mind filing a bug on SourceForge about this to track the issue for when it gets fixed. Thanks for digging in deeper and tracking this sucker down. _____ From: wix...@li... [mailto:wix...@li...] On Behalf Of Tom Kufeldt Sent: Thursday, December 30, 2004 6:26 PM To: ro...@us...; 'Vitaly Dolya'; wix...@li... Subject: Re: [WiX-users] Dark Error - error DARK0047 : Failed to close cab Rob, I just tried to decompile a Microsoft merge module and received a similar result. D:\msft-MergeModules>dark -x msm-bin -m msvcrt.msm msvcrt.wxs Microsoft (R) Windows Installer Xml Decompiler Version 2.0.2415.0 Copyright (C) Microsoft Corporation 2003. All rights reserved. msvcrt.msm dark.exe : error DARK0047 : Failed to close cab 'D:\msft-MergeModules\msm-bin\MergeModule.CAB'. dark.exe : warning DARK0004 : Unable to find existing file D:\msft-MergeModules\msm-bin\extract\Global_VC_CRT_f0.51D569E0_8A28_11D2_B96 2_006097C4DE24 to place in src location .\Redist\MS\System\msvcrt.dll. Will likely cause a linker break. For what it's worth the cab is named MergeModule.CABinet not MergeModule.CAB. Microsoft merge module D:\msft-MergeModules>cscript /nologo D:\WiStream.vbs msvcrt.msm MergeModule.CABinet SummaryInformation Merge Module built using WIX D:\>cscript /nologo D:\WiStream.vbs example.msm MergeModule.CABinet SummaryInformation Is dark trying to close the wrong file when extracting the cab file from merge modules? Tomk. ----- Original Message ----- From: Tom Kufeldt <mailto:tku...@ho...> To: ro...@us... ; 'Vitaly <mailto:vd...@tm...> Dolya' ; wix...@li... Sent: Thursday, December 30, 2004 3:43 PM Subject: Re: [WiX-users] Dark Error - error DARK0047 : Failed to close cab Rob, This error is present on WinXP SP1 and SP2. The product packaged in the merge module is intended for versions of Windows from Win2k and later but the merge module development has been done on WinXP. This error occurred while doing new development using Wix to create a merge module to replace an installer package originally created using Wise for Windows Installer v2.0. That version of Wise was abandoned when it was discovered that it was not possible to automate the msi build process using the Wise tools. The Windows Installer v2.0 SDK and msi2xml tools were used to convert the wsi file to an msi file and automate the build process. Since the product is a shared component within the organization a requirement was generated to create a merge module in place of the installer package. At this point Wix became available and was chosen as the tool set to build Windows based installers and merge modules. dark.exe was used to decompile the original installer file and portions of this were used to create the Wix source for the merge module. Both cab files in the installer file and the merge module contain the same files. However merge module also includes the debug symbol files for the executables in the cab file. Therefore the merge module cab file is larger of the two cab files. To date I am unaware of any problems merging the msm file or installing the subsequent msi file. So the only Wix related issue I have seen thus far occurs while using dark.exe to extract the cab file from a merge module created using candle.exe, lit.exe and light.exe. Tomk. Additional detail: msi cab --a-- - - - - - 22,820,354 12-28-2004 example.cab msm cab --a-- - - - - - 31,293,104 12-28-2004 MergeModule.CABinet The installer file was created using the following tools msi2xml <https://sourceforge.net/projects/msi2xml/> --a-- W32i APP ENU 2.1.8.948 shp 327,680 03-01-2004 xml2msi.exe Windows <http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/ windows_installer_scripting_examples.asp> Installer v2.0 SDK script examples --a-- - - - - - 12,571 06-26-2002 WiMakCab.vbs --a-- - - - - - 10,965 06-26-2002 WiFilVer.vbs --a-- W32i APP ENU 5.1.2600.0 shp 79,360 10-23-2002 makecab.exe The merge module was built using v2.0.415.0 of the Wix tools --a-- W32i APP - 2.0.2415.0 shp 15,872 12-27-2004 candle.exe --a-- W32i APP - 2.0.2415.0 shp 24,576 12-27-2004 lit.exe --a-- W32i APP - 2.0.2415.0 shp 32,768 12-27-2004 light.exe --a-- W32i DLL - 2.0.2415.0 shp 1,253,376 12-27-2004 wix.dll --a-- W32i - - - - 188,416 12-27-2004 wixcab.dll The output from dark Installer file D:\>dark -x msi_bin example.msi example.wxs Microsoft (R) Windows Installer Xml Decompiler Version 2.0.2415.0 Copyright (C) Microsoft Corporation 2003. All rights reserved. example.msi Merge module D:\>dark -x msm_bin -m example.msm example-msm.wxs Microsoft (R) Windows Installer Xml Decompiler Version 2.0.2415.0 Copyright (C) Microsoft Corporation 2003. All rights reserved. example.msm dark.exe : error DARK0047 : Failed to close cab 'D:\msm_bin\MergeModule.CAB'. dark.exe : warning DARK0004 : Unable to find existing file D:\msm_bin\extract\FileTableName.AE66FADE_B694_436B_BC4B_3953E76FB78F to place in src location \PROVIDER\FILENAME.DLL. Will likely cause a linker break. Note: There is a DARK0004 warning for each file in the cab. And the directory msm_bin from the command line is empty. ----- Original Message ----- From: Rob Mensching <mailto:ro...@us...> To: 'Vitaly Dolya' <mailto:vd...@tm...> ; wix...@li... Cc: 'Tom Kufeldt' <mailto:tku...@ho...> Sent: Thursday, December 30, 2004 10:09 AM Subject: RE: [WiX-users] Dark Error - error DARK0047 : Failed to close cab Tom, did your scripts decompress the cabinet from the MSI file as well? I think the error you're seeing from dark is occurring at the end of the decompliation after dark is done dealing with the cabinet. Vitaly is correct if you are on an older OS (Win9x and some Win2k. I thought it was fixed in one of the SPs, but Vitaly is more likely to be right than me), there were some issues with the cabinet processing code when cabinets were a particular size and shape. This thread plus the other threads about wixcab.dll not being as fast as it could be makes me wonder if there are some issues in the wixcab.dll somewhere. Tom, if you can provide more detailed information about the issues you are seeing that would be much appreciated. |