【问题标题】:FireBreath plugin automatic installationFireBreath插件自动安装
【发布时间】:2011-05-25 09:45:52
【问题描述】:
我使用 FireBreath VS2010 编写了一个插件,适用于 Windows,所有浏览器。
在 FireBreath 文档中,我看到我必须安装 WiX。我安装了它。
我使用自动 fbgen 工具创建了项目,因此它自动为我创建了一个 WiX。
我无法从文档中理解现在要做什么:
我必须编辑生成的 WiX 源文件吗?如果是,那里要改什么?
在对象标签中写什么会触发安装创建的msi?
或者至少告诉用户需要安装并将他链接到下载?
10 倍!
【问题讨论】:
标签:
plugins
wix
windows-installer
firebreath
【解决方案1】:
安装 WiX Toolkit 后,重新运行 prep__.bat 文件以重新生成安装程序项目以及主插件项目。构建插件项目,然后构建名为 {YourPlugin}_WiXInstaller 的安装程序项目。 msi 将放置在 Firebreath 的 \build\bin\{YourPlugin}\{Configuration} 目录中({Configuration} 是 Debug、Release 等)。
除非您真的想更改特定设置,否则无需编辑 WiX 文件。我能想到的一件事是将默认的每用户安装更改为所有用户。每个用户通常更好,因为它避免了 UAC 问题。
将它部署给用户有点棘手。对于大多数浏览器,用户必须保存并运行 msi。在 IE 上,您可以在 HTML 正文中声明一个对象,并将代码库指向包含插件的 URL:
<object id="pluginid" type="application/x-yourplugin" width="0" height="0" codebase="/YourPlugin.msi" >
<param name="onload" value="pluginLoaded" />
</object>
但是 IE9 的安全性似乎阻止了 MSI。如果使用插件 DLL(codebase="/YourPlugin.dll"),它确实有效。这种自动安装方法仅适用于带有签名二进制文件的 IE(除非 IE 的安全选项被调低)。
希望a discussion thread on the MSI security issue 能给出一些答案。
更新:
如hinted by Richard / taxilian,MSI 必须打包在 CAB 文件中,以便 IE 安装它。获得正确的 INF 并创建 CAB 需要一些 additional steps as documented by RB。此外,Vista/Win7 不允许 INF 调用 CAB 文件之外的任何二进制文件,因此必须使用存根启动应用程序(参见this thread 和 Roey 在底部发布的示例代码)。 /p>