3

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

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

您还可以告诉我如何使用 NSIS/ Inno Setup/ Advanced Installer为浏览器扩展创建安装程序包。

4

2 回答 2

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
于 2013-03-01T10:24:25.953 回答
1

从我可以看到你基本上需要: - 检测安装的浏览器 - 在所需路径中安装扩展文件 - 创建注册表项

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

安装文件很容易,只需转到文件和文件夹页面并将它们添加到所需的目标文件夹中。在此之后按 F8,您将被带到文件组件并设置安装条件。

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

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

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

于 2013-02-11T12:13:13.890 回答