0
votes

I have developed browser plugin using firebreath 1.7. Am using VS 2010 (32 bit) version 4.5 I run prep2010x64 for developed 64 bit plugin.The script files runs successfully. When i build the solution i found below error from .wxs file.

FILE CODE:

Error Message:

"error LGHT0204: ICE38: Component cmpF18BE09DE30566DAAE419571E599F99A installs to user profile. It must use a registry key under HKCU as its KeyPath, not a file."

The plugin projects runs without error and i can able to access the methods from dll using native methods in winform application.

But failed to register plugin in browser.

2

2 Answers

0
votes

Check that the file element has a Keypath attribute set to yes.

For example:

<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
   <Component Id="myapplication.exe" Guid="PUT-GUID-HERE">
       <File Id="myapplication.exe" Source="MySourceFiles\MyApplication.exe" KeyPath="yes"/>
  </Component>
  <Component Id="documentation.html" Guid="PUT-GUID-HERE">
      <File Id="documentation.html" Source="MySourceFiles\documentation.html" KeyPath="yes"/>
  </Component>
</DirectoryRef>

If it's not the issue, please add your code to the question.

0
votes

FireBreath's wix code relies on heat, which doesn't work with 64 bit DLLs.

You can make your own .wxs template for it using a 32 bit build and then use it similar to this:

if (CMAKE_SIZEOF_VOID_P EQUAL 8)
    # On 64 bit heat.exe doesn't seem to work!
    configure_file("${CMAKE_CURRENT_SOURCE_DIR}/Win/WiX/pluginObject.wxs" "${CMAKE_CURRENT_BINARY_DIR}/pluginObject${WIX_HEAT_SUFFIX}.wxs")
    message("Configuring ${CMAKE_CURRENT_SOURCE_DIR}/Win/WiX/pluginObject.wxs to ${CMAKE_CURRENT_BINARY_DIR}/pluginObject${WIX_HEAT_SUFFIX}.wxs")
    set(WIX_HEAT_OVERRIDE "${CMAKE_CURRENT_BINARY_DIR}/pluginObject${WIX_HEAT_SUFFIX}.wxs")
    set(WIX_IS_WIN64 yes)
    SET(WIX_PLATFORM x64)
    SET(ProgramFilesFolder ProgramFilesFolder64)
ELSE()
    set(WIX_IS_WIN64 no)
    SET(WIX_PLATFORM x86)
    SET(ProgramFilesFolder ProgramFilesFolder)
endif()
add_wix_installer( "${PLUGIN_NAME}"
    "${WIX_SOURCE_FILE}"
    PluginDLLGroup
    "${FB_BIN_DIR}/${PLUGIN_NAME}/${CMAKE_CFG_INTDIR}/"
    "${FB_BIN_DIR}/${PLUGIN_NAME}/${CMAKE_CFG_INTDIR}/${FBSTRING_PluginFileName}.dll"
    "${PROJECT_NAME}"
    )

The main thing to note there are the WIX_HEAT_OVERRIDE which tells it which .wxs file to use instead of running heat. I honestly don't remember what the other things are for, but feel free to check out the code yourself and figure it out :-P That should help you get started, though.