【问题标题】:Create single Installer for all browser extension for all there browsers (IE, Chrome, Firefox)为所有浏览器(IE、Chrome、Firefox)的所有浏览器扩展创建单个安装程序
【发布时间】:2017-01-11 18:11:10
【问题描述】:

我已经为 Chrome(.crx 文件)、Mozilla Firefox(.xpi 文件)、Internet Explorer(.exe 文件)创建了扩展工具栏。我现在只需要为所有三个一起创建单个安装程序(EXE 或 MSI)。

请不要建议 CrossRider;我不知道如何将它用于已经创建的第三方扩展。我不想将代码再次写入 CrossRider。如果你知道如何使用我已经写好的代码,那没关系;否则建议别的。

你也可以告诉我如何使用 NSIS/ Inno Setup/ Advanced Installer 来创建浏览器扩展的安装包。

【问题讨论】:

  • 我可以帮助您使用高级安装程序,但我需要有关安装内容的更多详细信息。我假设您找到使用注册表搜索安装的浏览器?另外,您需要放置文件的位置是什么?您是否针对每个浏览器以特殊方式计算它?
  • 如果您能帮助我安装高级安装程序,那就太好了。我已经获得了它的 Architect 版本的许可。我有 3 个文件,一个是 .XPI,它是 Firefox 的扩展,一个是 .CRX,它是 Chrome 的扩展,最后一个是 IE 的 .EXE 扩展。所有文件都可以单独运行,没有任何问题。我可以手动安装它们。
  • Chrome 和 Firefox 可以参考以下链接。对于 IE,这不会成为问题,因为我有一个可以调用的 exe。

标签: google-chrome firefox installation


【解决方案1】:

我们如何使用 Inno Setup 来做到这一点。

;Create Directory for Mozilla and Chrome

[Dirs]
Name: "{pf}\[Directory Name]"
Name: "{reg:HKLM\Software\Google\Chrome\Extensions,Path|{pf}\[Directory Name]}"
Name: "{reg:HKLM\Software\Mozilla\Firefox\Extensions,Path|{pf}\[Directory Name]}"

;Add Files

[Files]
Source: "Sample.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: "sample@sample.com.xpi"; DestDir: "{pf}\[Directory Name]"; Flags: ignoreversion
Source: "phogkfodcfpcnalkmlcjmlnhgjacapcf\sample_chrome.crx"; DestDir: "{pf}\[Directory Name]"; Flags: ignoreversion

;Create Registry

[Registry]
Root: "HKLM"; Subkey: "Software\Google\Chrome\Extensions\mefpokegaaknljjamcdfhnimiiogmogk"; ValueType: string; ValueName: "Path"; ValueData: "{pf}\[Directory Name]\sample_chrome.crx"; Flags: uninsdeletekey
Root: "HKLM"; Subkey: "Software\Google\Chrome\Extensions\mefpokegaaknljjamcdfhnimiiogmogk"; ValueType: string; ValueName: "Version"; ValueData: "1.4"; Flags: uninsdeletekey
Root: "HKLM"; Subkey: "Software\Mozilla\Firefox\Extensions"; ValueType: string; ValueName: "sample@sample.com"; ValueData: "{pf}\[Directory Name]\sample@sample.com.xpi"; Flags: uninsdeletekey

;Run Exe file

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

【讨论】:

    【解决方案2】:

    据我所知,您基本上需要: - 检测安装的浏览器 - 在所需路径中安装扩展文件 - 创建注册表项

    解决方案: 要检测浏览器,您可以从 Search page 创建注册表搜索。搜索名称实际上是一个公共属性,因此您可以使用它来设置文件和注册表项的安装条件,方法是从 Organization page 设置它们的对应组件的条件。

    安装文件很简单,只需转到Files and Folders page 并将它们添加到所需的目标文件夹中。在此之后按 F8,您将被带到文件组件并设置安装条件。

    最后一部分是设置注册表项。转到 Registry page 并像在 regedit 中一样创建它们。与文件相同,在为扩展创建条目后,使用 F8 转到其组件并设置与文件相同的安装条件。

    从控制面板中删除软件包时会自动处理卸载,即软件包创建的文件和注册表项将被删除。

    关于IE,你可以call your EXE as a custom action。您将需要两个自定义操作,即在安装时执行的操作,在安装结束时注册扩展。第二个自定义操作将在卸载时执行,在开始时,它会在包删除 EXE 之前取消注册扩展。

    【讨论】:

    • 非常感谢 Mitrache 的所有努力,我已经通过 Inno Setup 完成了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 2013-05-08
    • 1970-01-01
    相关资源
    最近更新 更多