我已经为Chrome(.crx文件),Mozilla Firefox(.xpi文件),Internet Explorer(.exe文件)创建了扩展工具栏。我现在只需要为这三个人一起创建单个安装程序(EXE或MSI)。
请不要告知CrossRider;我不知道如何将它用于已创建的第三方扩展。我不想再将代码写入CrossRider。如果你知道如何使用我已编写的代码,那就没关系;否则提出别的建议。
您还可以告诉我如何使用NSIS / Inno Setup / Advanced Installer创建用于浏览器扩展的安装程序包。
答案 0 :(得分:6)
我们如何使用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
答案 1 :(得分:1)
从我所看到的你基本上需要: - 检测安装的浏览器 - 在所需路径中安装扩展文件 - 创建注册表项
解决方案提案: 要检测浏览器,您可以从Search page创建注册表搜索。搜索名称实际上是一个公共属性,因此您可以使用它来调整文件和注册表项的安装,方法是设置Organization page的相应组件条件。
安装文件很简单,只需转到Files and Folders page并将其添加到所需的目标文件夹中即可。在按下F8之后,您将进入文件组件并设置安装条件。
最后一部分是设置注册表项。转到Registry page并像在regedit中一样创建它们。与文件相同,在为扩展创建条目后,使用F8转到其组件并设置与文件相同的安装条件。
从控制面板中删除软件包时会自动处理卸载,即将删除软件包创建的文件和注册表项。
关于IE,您可以call your EXE as a custom action。您将需要两个自定义操作,即在安装时执行的操作,在安装结束时注册扩展。第二个自定义操作将在开始时在卸载时执行,因此它会在程序包删除EXE之前取消注册扩展。