我使用firebreath 1.7开发了浏览器插件。 我使用的是VS 2010(32位)4.5版 我为开发的64位插件运行prep2010x64。脚本文件成功运行。 当我构建解决方案时,我发现以下错误来自.wxs文件。
文件代码:
错误讯息:
"错误LGHT0204:ICE38:组件cmpF18BE09DE30566DAAE419571E599F99A安装到用户配置文件。它必须使用HKCU下的注册表项作为其KeyPath,而不是文件。"
插件项目运行没有错误,我可以使用winform应用程序中的本机方法从dll访问方法。
但未能在浏览器中注册插件。
答案 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这应该可以帮助你开始。