[Bug 26484] Strawberry perl installation fails

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Mar 20 18:12:18 CDT 2011


http://bugs.winehq.org/show_bug.cgi?id=26484

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net

--- Comment #4 from Anastasius Focht <focht at gmx.net> 2011-03-20 18:12:17 CDT ---
Hello,

looks like a property which processed in RelocateMM custom action is missing a
part, leading to invocation of crash handler.

--- snip ---
0009:trace:msi:msi_get_property returning L"MM;C:\\strawberry\\;" for property
L"CA_Relocate_msm.BC4B680E_4871_31E7_9883_3E2C74EA4F3C"
0009:trace:msi:msi_set_property 0x1315c0 L"CustomActionData"
L"MM;C:\\strawberry\\;" 
--- snip ---

The source of the CA can be found here:

http://cpansearch.perl.org/src/CSJEWELL/Perl-Dist-WiX-1.500/src/ClearFolderCA/

Copy of "sRelocationFile" parameter fails due to previous tokenizer failure:

--- snip ---
UINT __stdcall RelocateMM(
    MSIHANDLE hModule) // Handle of MSI being installed. [in]
                       // Passed to most other routines.
{
    TCHAR sInstallDirectory[MAX_PATH + 1];
    TCHAR sRelocationFile[MAX_PATH + 1];
    TCHAR sCAData[MAX_PATH * 2 + 6];
    UINT uiAnswer;
    DWORD dwPropLength;

    // Get directory to relocate to.
    dwPropLength = MAX_PATH * 2 + 5; 
    uiAnswer = ::MsiGetProperty(hModule, TEXT("CustomActionData"), sCAData,
&dwPropLength); 
    MSI_OK(uiAnswer)

    TCHAR *sTokenContext = NULL;
    TCHAR *sToken = NULL;

    sToken = _tcstok_s(sCAData, _T(";"), &sTokenContext);
    if (0 != _tcscmp(sToken, _T("MM"))) {
        return ERROR_INSTALL_FAILURE;
    }
    sToken = _tcstok_s(NULL, _T(";"), &sTokenContext);
    _tcscpy_s(sInstallDirectory, _MAX_PATH, sToken);
    sToken = _tcstok_s(NULL, _T(";"), &sTokenContext);
    _tcscpy_s(sRelocationFile, _MAX_PATH, sToken); <--- sToken == NULL ->
invoke crash handler


    return Relocate_Worker(hModule, sInstallDirectory, sRelocationFile);

}
--- snip ---

The CA_Relocate_msm property is defined here:

http://cpansearch.perl.org/src/CSJEWELL/Perl-Dist-WiX-1.500/share/default/Merge-Module.wxs.tt

--- snip ---
...
[% IF dist.relocatable %]
    [% IF dist.use_dll_relocation %]
    <CustomAction Id="CA_FileList_msm" Property="CA_Relocate_msm"
                  Value="MM;[INSTALLDIR];[% dist.assert.msm_relocation_idlist
%]" Return="check" />
    <CustomAction Id="CA_Relocate_msm" BinaryKey="B_ClearFolder" 
                  DllEntry="RelocateMM" Execute="deferred" Return="check" />

    <InstallExecuteSequence>
        <Custom Action="CA_FileList_msm" After="InstallFiles" />
        <Custom Action="CA_Relocate_msm" After="CA_FileList_msm">
            <![CDATA[NOT (NO_RELOCATE OR Installed)]]>
        </Custom>
    </InstallExecuteSequence> 
--- snip ---

Interestingly I didn't find any "dist.assert.msm_relocation_idlist" reference
in the class documentation and source code.

http://search.cpan.org/~csjewell/Perl-Dist-WiX-1.500/lib/Perl/Dist/WiX.pm

This looks like some bug in Perl Wix installer module hence this this installer
might be broken on Windows too.

Can someone test this installer on Windows and check if there is any crash
reporting tool invoked during install?

Regards

-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list