Firebreath prep2010x64无法正常工作

时间:2015-12-17 06:06:18

标签: wix firebreath

我使用firebreath 1.7开发了浏览器插件。 我使用的是VS 2010(32位)4.5版 我为开发的64位插件运行prep2010x64。脚本文件成功运行。 当我构建解决方案时,我发现以下错误来自.wxs文件。

文件代码:

                                                                                         

错误讯息:

"错误LGHT0204:ICE38:组件cmpF18BE09DE30566DAAE419571E599F99A安装到用户配置文件。它必须使用HKCU下的注册表项作为其KeyPath,而不是文件。"

插件项目运行没有错误,我可以使用winform应用程序中的本机方法从dll访问方法。

但未能在浏览器中注册插件。

2 个答案:

答案 0 :(得分:0)

检查文件元素是否将Keypath属性设置为yes。

例如:

<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>

如果不是问题,请将您的代码添加到问题中。

答案 1 :(得分:0)

FireBreath的wix代码依赖于热量,这对64位DLL无效。

您可以使用32位版本为它创建自己的.wxs模板,然后使用它类似于:

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}"
    )

需要注意的主要事项是WIX_HEAT_OVERRIDE,它告诉它使用哪个.wxs文件而不是运行热量。老实说,我不记得其他的东西是什么,但你可以自己查看代码并弄明白:-P这应该可以帮助你开始。