Inno设置 - 如何在安装Google Chrome时告知安装,它应该打开stackoverflow.com?

时间:2014-03-18 00:14:30

标签: windows google-chrome installation package inno-setup

通过以下方式:https://productforums.google.com/forum/#!topic/chrome/8XnSOnhLBzA

  • http://ninite.com/chrome/获取他们的Chrome安装程序(但这并没有帮助我,因为我需要在安装Google Chrome后最终打开一个特定的网站)

  • 现在我正在尝试使用Inno Setup,以确保我与Ninite几乎相同

  • Inno Setup完成Google Chrome安装后,如何确保使用Google Chrome打开www.stackoverflow.com?

这是我的Inno Setup代码,在第3点没有正确执行:

  1. 安装Google Chrome

  2. 安装执行Google Chrome后
  3. 但我如何告诉谷歌浏览器 - 执行第一个链接:www.stackoverflow.com?

  4. ; Script generated by the Inno Setup Script Wizard.
    ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
    
    #define MyAppName "My Program"
    #define MyAppVersion "1.5"
    #define MyAppPublisher "My Company, Inc."
    #define MyAppURL "http://www.example.com/"
    #define MyAppExeName "ChromeSetup (1).exe"
    
    [Setup]
    ; NOTE: The value of AppId uniquely identifies this application.
    ; Do not use the same AppId value in installers for other applications.
    ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
    AppId={{FCF7940A-D96F-4A7A-9C69-C9DFE8BB308A}
    AppName={#MyAppName}
    AppVersion={#MyAppVersion}
    ;AppVerName={#MyAppName} {#MyAppVersion}
    AppPublisher={#MyAppPublisher}
    AppPublisherURL={#MyAppURL}
    AppSupportURL={#MyAppURL}
    AppUpdatesURL={#MyAppURL}
    DefaultDirName={pf}\{#MyAppName}
    DefaultGroupName={#MyAppName}
    OutputDir=C:\Users\sun\Desktop\Nieuwe map
    OutputBaseFilename=setup
    Compression=lzma
    SolidCompression=yes
    
    [Languages]
    Name: "english"; MessagesFile: "compiler:Default.isl"
    
    [Tasks]
    Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
    
    [Files]
    Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
    Source: "C:\Users\sun\Downloads\ChromeSetup (1).exe"; DestDir: "{app}"; Flags: ignoreversion
    ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
    
    [Icons]
    Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
    Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
    
    [Run]
    Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
    

1 个答案:

答案 0 :(得分:8)

以下内容可能有效,因为我引用的注册表项在Chrome安装程序的official docs中有所描述。有一个注册表项直接包含chrome.exe文件的路径,因此它是获取Chrome应用的最佳选择。文件名。这是关键:

<root>\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe

<root>HKEY_LOCAL_MACHINEHKEY_CURRENT_USER注册机构根目录的位置,具体取决于是为当前用户安装了Chrome还是为整个系统安装了Chrome。

在以下脚本中,我使用上述密钥不仅可以获取Chrome应用。文件名,但即使是用于确定Chrome是否已安装:

[Files]
Source: "chrome_installer.exe"; DestDir: "{tmp}"; Flags: deleteafterinstall

[Run]
Filename: "{tmp}\chrome_installer.exe"; Check: not IsChromeInstalled
Filename: "{code:GetChromeFileName}"; Parameters: "www.stackoverflow.com"; \
    Check: IsChromeInstalled

[Code]
const
  ChromeAppRegKey = 'Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe';

function IsChromeInstalled: Boolean;
begin
  { check if there's the Chrome app registration entry under the HKCU, or }
  { HKLM root key, return the result }
  Result := RegKeyExists(HKEY_CURRENT_USER, ChromeAppRegKey) or
    RegKeyExists(HKEY_LOCAL_MACHINE, ChromeAppRegKey);
end;

function GetChromeFileName(Value: string): string;
var
  S: string;
begin
  { initialize returned value to an empty string }
  Result := '';
  { first attempt to read the Chrome app file name from the HKCU root key; }
  { if that fails, try to read the same from HKLM; if any of that succeed, }
  { return the obtained registry value }
  if RegQueryStringValue(HKEY_CURRENT_USER, ChromeAppRegKey, '', S) or
    RegQueryStringValue(HKEY_LOCAL_MACHINE, ChromeAppRegKey, '', S)
  then
    Result := S;
end;