WiX compile fail on Win2008 64-bits

459 views
Skip to first unread message

YoKo Lo

unread,
May 10, 2013, 3:41:38 AM5/10/13
to firebre...@googlegroups.com
I try to move a firebreath plugin project from WinXP 32-bits to Win2008 64-bits. Run regsvr32 on the dll after build, 64-bits browser could find the dll, but WiX compile fail as below:

>npxxx_auto.wxs(8): error LGHT0204: ICE38: Component cmpxxxxx installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file.
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command "setlocal
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: "C:\Program Files (x86)\WiX Toolset v3.7\bin\light.exe" -sw1076 -ext WixUtilExtension -ext WixUIExtension -out {MyPluginBuildDstPath}/{MyPlugin}.msi {MyPluginBuildPjPath}/{MyPlugin}Installer.wixobj {MyPluginBuildPjPath}/{MyPlugin}_auto.wixobj
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: if %errorlevel% neq 0 goto :cmEnd
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :cmEnd
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :cmErrorLevel
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: exit /b %1
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :cmDone
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: if %errorlevel% neq 0 goto :VCEnd
>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code 204.

WiX installer on 32-bits works well, and I don't do any modification for {MyPluginSrcPjPath}/{MyPlugin}_Installer.wxs on 64-bits.
WiX Toolset version is: v3.7

How could I fix the WiX compiler error?

Thanks.

Richard Bateman

unread,
May 10, 2013, 4:12:24 PM5/10/13
to firebre...@googlegroups.com

Note that you shouldn't be prepping with the _64.cmd prep command unless you actually want a 64 bit version of the DLL.  If your first response to that question is any of "I don't know if I do", "why would I not", or "seems reasonable" then you *do not* want a 64 bit version of the DLL and thus should not be using the _64.cmd prep script.

If that isn't it (you aren't building it that way) then you're most likely missing a DLL dependency in the build dir when wix runs.

Richard

May 10, 2013, в 01:41, YoKo Lo <yok...@gmail.com> написал(а):

--
 
---
You received this message because you are subscribed to the Google Groups "firebreath-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firebreath-de...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

YoKo Lo

unread,
May 13, 2013, 3:23:25 AM5/13/13
to firebre...@googlegroups.com
Hi Richard,
But build code successfully without running WiX.
Why there are different in these two situations?
How could I check the missing DLL dependency issue?

Thanks.

YoKo

Richard Bateman (taxilian)於 2013年5月11日星期六UTC+8上午4時12分24秒寫道:

Richard Bateman

unread,
May 13, 2013, 12:02:37 PM5/13/13
to firebre...@googlegroups.com

the 64 bit DLL is only needed if you're using a 64 bit browser; I don't know why wix doesn't support 64 bit COM correctly, but it seems to sometimes have issues.  Maybe it's missing a DLL in 64 bit? I don't know.

It's worth noting that while 64 bit versions of windows do come with IE 64 bit, they still default to 32 bit.  Other browsers also default to 64 bit so far.

Richard

YoKo Lo

unread,
May 13, 2013, 10:56:18 PM5/13/13
to firebre...@googlegroups.com
Thanks for your reminder, I use IE64/Firefox(64) to run the 64-bits DLL (directly build code without running WiX), and it works well.


You say maybe it is missing a DLL in 64 bits.-->It means maybe WiX ToolSet is missing a DLL in 64 bits? If yes, How could I find the root cause and come out solution?

Today I try to create a new firebreath plugin project (not do any modification) and build it on Win2008 64 bits, WiX still build fail, and the compile error is the same as I mentioned when I post this problem.
Is there something missing in my build code environment? or Should I modify setting in the firebreath plugin project?
is there anybody meet this problem?

My build code environment:
*Win2008 x64
*Microsoft Visual Studio 2010
*Microsoft Windows SDK v7.1
*firebreath-FireBreath-firebreath-1.7.0-0-gdf8659e.zip
*firebreath-boost-1.50.0.zip
*Cmake2.8
*python-2.7.4.amd64.msi
*WiX Toolset v3.7

YoKo

Richard Bateman (taxilian)於 2013年5月14日星期二UTC+8上午12時02分37秒寫道:

Richard Bateman

unread,
May 14, 2013, 1:10:57 AM5/14/13
to firebre...@googlegroups.com

Is there a particular reason why you need 64 bit support on windows?  I don't know why wix wouldn't be working; you'll have to troubleshoot that yourself.  Try using heat.exe from wix to harvest the com info from a 64 bit dll, that will shed light on it.

Also, if you're using vs2010 pro (not express) you shouldn't need the windows sdk.

Richard

heinob

unread,
May 14, 2013, 2:08:37 AM5/14/13
to firebre...@googlegroups.com
That is quite easy: Try to register your DLL with regsvr32.exe. If it succeeds all DLL's shich are loaded by your DLL are there. If it fails, something is missing. Remember that all dependend DLL's have to be reachable (means staying in the same directory as your DLL or in \Windows\System32).

YoKo Lo

unread,
May 14, 2013, 4:07:53 AM5/14/13
to firebre...@googlegroups.com
heinob,
My problem is compile fail when build WiXInstall. :(


Richard,
I find build\projects\MyPlugin\npfbPlugin_auto.wxs in 64-bits seems to leak some information. Why this file miss some content? How could I make this file correct?

***incorrect in 64-bits***:
<?xml version="1.0" encoding="utf-8"?>
<w:Wix xmlns:w="http://schemas.microsoft.com/wix/2006/wi" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <w:Fragment>
        <w:DirectoryRef Id="INSTALLDIR" />
    </w:Fragment>
    <w:Fragment>
        <w:ComponentGroup Id="PluginDLLGroup">
            <w:Component Id="cmpBEB5C5948A7FFDFF0CA8DE308AEE86CF" Guid="{3ADA7F27-C3B6-452C-9A4F-2880930E64D7}" Directory="INSTALLDIR">
                <w:File Id="fil7F959DD87CFBB01C617057229E719207" Source="$(var.BINSRC)\npfbPlugin.dll" />
            </w:Component>
        </w:ComponentGroup>
    </w:Fragment>
</w:Wix>

***correct in 32-bits***:
<?xml version="1.0" encoding="utf-8"?>
<w:Wix xmlns:w="http://schemas.microsoft.com/wix/2006/wi" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
    <w:Fragment>
        <w:DirectoryRef Id="INSTALLDIR" />
    </w:Fragment>
    <w:Fragment>
        <w:ComponentGroup Id="PluginDLLGroup">
            <w:Component Id="cmpBEB5C5948A7FFDFF0CA8DE308AEE86CF" Guid="{5BB3A8B5-2619-4384-9097-CA250A43BA42}" Directory="INSTALLDIR">
                <w:File Id="fil7F959DD87CFBB01C617057229E719207" Source="$(var.BINSRC)\npfbPlugin.dll">
                    <w:TypeLib Id="{5C37F152-93A4-5A48-A8E7-C6F167D7E3A3}" Description="fbPlugin 1.0 Type Library" HelpDirectory="INSTALLDIR" Language="0" MajorVersion="1" MinorVersion="0">
                        <AppId Description="FireBreathWin" Id="{B415CD14-B45D-4BCA-B552-B06175C38606}" xmlns="http://schemas.microsoft.com/wix/2006/wi">
                            <Class Id="{C97CD19D-0A8C-51B1-8ABB-96C8B8D1A307}" Context="InprocServer32" Description="fbPlugin" ThreadingModel="apartment" Version="1" Programmable="yes" Control="yes">
                                <ProgId Id="test.fbPlugin.1" Description="fbPlugin">
                                    <ProgId Id="test.fbPlugin" Description="fbPlugin" />
                                </ProgId>
                            </Class>
                        </AppId>
                        <Interface Id="{978E6A1F-0FF1-5AD3-85A9-A3338BD8B07F}" Name="IFBComEventSource" ProxyStubClassId="{00020420-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020420-0000-0000-C000-000000000046}" xmlns="http://schemas.microsoft.com/wix/2006/wi" />
                        <Interface Id="{B8F49A59-2115-56A1-8D55-6E9737BF5B0F}" Name="IFBComJavascriptObject" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" xmlns="http://schemas.microsoft.com/wix/2006/wi" />
                        <Interface Id="{FAB5D0E8-3D06-5EA8-A506-8004E1DB0ADA}" Name="IFBControl" ProxyStubClassId="{00020424-0000-0000-C000-000000000046}" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" xmlns="http://schemas.microsoft.com/wix/2006/wi" />
                    </w:TypeLib>
                </w:File>
                <ProgId Id="MIME" xmlns="http://schemas.microsoft.com/wix/2006/wi" />
                <w:RegistryValue Key="AppID\npfbPlugin.dll" Value="{B415CD14-B45D-4BCA-B552-B06175C38606}" Type="string" Action="write" Name="AppID" Root="HKCR" />
                <w:RegistryValue Key="CLSID\{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}\MiscStatus\1" Value="131473" Type="string" Action="write" Root="HKCR" />
                <w:RegistryValue Key="CLSID\{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}\MiscStatus" Value="0" Type="string" Action="write" Root="HKCR" />
                <w:RegistryValue Key="MIME\Database\Content Type\application/x-fbplugin" Value="fbPlugin" Type="string" Action="write" Root="HKCR" />
                <w:RegistryValue Key="MIME\Database\Content Type\application/x-fbplugin" Value="" Type="string" Action="write" Name="Extension" Root="HKCR" />
                <w:RegistryValue Key="MIME\Database\Content Type\application/x-fbplugin" Value="{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}" Type="string" Action="write" Name="CLSID" Root="HKCR" />
                <w:RegistryValue Key="Software\Microsoft\Windows\CurrentVersion\Ext\PreApproved\{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}" Value="" Type="string" Action="write" Root="HKCU" />
                <w:RegistryValue Key="Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}\iexplore\AllowedDomains\*" Value="" Type="string" Action="write" Root="HKCU" />
                <w:RegistryValue Key="Software\Microsoft\Windows\CurrentVersion\Ext\Stats\{c97cd19d-0a8c-51b1-8abb-96c8b8d1a307}\iexplore" Value="-858993460" Type="integer" Action="write" Name="Count" Root="HKCU" />
                <w:RegistryValue Key="Software\MozillaPlugins\test.com/fbPlugin" Value="[#fil7F959DD87CFBB01C617057229E719207]" Type="string" Action="write" Name="Path" Root="HKCU" KeyPath="yes" />
            </w:Component>
        </w:ComponentGroup>
    </w:Fragment>
</w:Wix>



heinob於 2013年5月14日星期二UTC+8下午2時08分37秒寫道:

Jochen Brüggemann

unread,
May 14, 2013, 4:31:45 AM5/14/13
to firebre...@googlegroups.com
WiX can only successfully "compile", if it can successfully register your plugin. So to exclude that error reason you should try to register your plugin-DLL "by hand". If that succeeds, there is another reason. if it fails --> find the reason why.


2013/5/14 YoKo Lo <yok...@gmail.com>

--
 
---
You received this message because you are subscribed to a topic in the Google Groups "firebreath-dev" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firebreath-dev/-68PBNgqhHo/unsubscribe?hl=en-US.
To unsubscribe from this group and all its topics, send an email to firebreath-de...@googlegroups.com.

YoKo Lo

unread,
May 16, 2013, 2:30:48 AM5/16/13
to firebre...@googlegroups.com
heinob,
As I mentioned that the DLL could be found after execute register32 by hand. Up to now, I still don't know why I can't build WiXInstall.vcxproj on Win2008 Server 64 bits, and I have no idea how to fix it.

Richard,
I am not sure how to use heat.exe. I try to use heat.exe to generate wxs file. What helpful info could be found from this wxs file?
Cmd:heat file npfbPlugin.dll -ag -template fragment -out file.wxs
Result (file.wxs):

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
        <DirectoryRef Id="TARGETDIR">
            <Directory Id="dir39B22699688E51DCD8DCBB99A47E835B" Name="Debug" />
        </DirectoryRef>
    </Fragment>
    <Fragment>
        <DirectoryRef Id="dir39B22699688E51DCD8DCBB99A47E835B">
            <Component Id="cmp5C5D5C59E636356547C08F6A0BD71E4D" Guid="PUT-GUID-HERE">
                <File Id="fil8E3F7148ADE4E7BB22833296B85833CF" KeyPath="yes" Source="SourceDir\Debug\npfbPlugin.dll" />
            </Component>
        </DirectoryRef>
    </Fragment>
</Wix>

heinob於 2013年5月14日星期二UTC+8下午4時31分45秒寫道:

YoKo Lo

unread,
May 28, 2013, 4:20:49 AM5/28/13
to firebre...@googlegroups.com
Hi Richard,
Finally I get a little progress.
After I modify the install path in .wxs file, WiX project could build successfully. But browser can't load this dll that I could find this dll in the install path after install.
before:<Directory Id="${FB_WIX_INSTALL_LOCATION}">
after:<Directory Id="ProgramFilesFolder">

I try to find the root cause, but I have no idea yet. Did I miss any configure or procedure when I prepare the Firebreath build code environment?

python cmd: Python27\python.exe fbgen.py
precmd: prep2010x64.cmd projects build

Here is my .wxs:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="${FBSTRING_PluginName}" Language="1033" Version="${FBSTRING_PLUGIN_VERSION}" Manufacturer="${FBSTRING_CompanyName}" UpgradeCode="{${FBControl_WixUpgradeCode_GUID}}">
        <Package InstallerVersion="200" Compressed="yes" Description="Installer for the ${FBSTRING_PluginName} plugin" InstallScope="perUser" />
        <Upgrade Id="{${FBControl_WixUpgradeCode_GUID}}">
            <UpgradeVersion
                Property="OLD_VERSION_FOUND"
                Minimum="0.0.1" IncludeMinimum="yes"
                Maximum="${FBSTRING_PLUGIN_VERSION}" IncludeMaximum="yes"
                OnlyDetect="no" IgnoreRemoveFailure="yes"
                MigrateFeatures="yes" />
        </Upgrade>
        <Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
        <InstallExecuteSequence>
            <RemoveExistingProducts After="InstallInitialize" />
            <InstallExecute After="RemoveExistingProducts" />
        </InstallExecuteSequence>
        <Media Id="1" Cabinet="${PLUGIN_NAME}.cab" EmbedCab="yes" />

      <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder">
                <Directory Id="CompanyDir" Name="${COMPANY_NAME}">
                    <Component Id="CompanyDirComp" Guid="*">
                        <RemoveFolder Id="RemoveCompanyDir" On="uninstall" />
                      <RegistryValue
                          Root="HKCU"
                          Key="SOFTWARE\${COMPANY_NAME}"
                          Name="Uninstall"
                          Type="string"
                          Value="${FBSTRING_PLUGIN_VERSION}"
                          KeyPath="yes" />
                    </Component>
                    <Directory Id="PluginNameDir" Name="${FBSTRING_PluginName}">
                        <Component Id="PluginNameDirComp" Guid="*">
                            <RemoveFolder Id="RemovePluginNameDir" On="uninstall" />
                            <RegistryValue
                                Root="HKCU"
                                Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}"
                                Name="Uninstall"
                                Type="string"
                                Value="${FBSTRING_PLUGIN_VERSION}"
                                KeyPath="yes" />
                        </Component>
                        <Directory Id="INSTALLDIR" Name="${FBSTRING_PLUGIN_VERSION}">
                            <Component Id="InstallDirComp" Guid="*">
                                <RemoveFolder Id="RemoveInstallDir" On="uninstall" />
                                <RegistryValue
                                    Root="HKCU"
                                    Key="SOFTWARE\${COMPANY_NAME}\${PLUGIN_NAME}\${FBSTRING_PLUGIN_VERSION}"
                                    Name="Uninstall"
                                    Type="string"
                                    Value="${FBSTRING_PLUGIN_VERSION}"
                                    KeyPath="yes" />
                            </Component>

                            <!-- Put Additional files here: -->
                            <!-- example:
                            <Component Id="UniqueComponentId" Guid="*">
                                <File Id="uniqueFileId" KeyPath="yes" Source="SourceDir\filename.ext" />
                            </Component>
                            /example -->
                            <!--  -->
                        </Directory>
                    </Directory>
                </Directory>
            </Directory>
        </Directory>
     
        <Feature Id="MainPluginFeature" Title="${FBSTRING_ProductName}" Level="1">
            <ComponentRef Id="InstallDirComp"/>
            <ComponentRef Id="PluginNameDirComp"/>
            <ComponentRef Id="CompanyDirComp"/>
            <ComponentGroupRef Id="PluginDLLGroup"/>
        </Feature>
    </Product>
</Wix>



YoKo Lo於 2013年5月16日星期四UTC+8下午2時30分48秒寫道:
Reply all
Reply to author
Forward
0 new messages