1

インストーラーに簡略化された CHM ヘルプを含めています。インストーラー ウィザードの各ページのヘルプ ボタンで別のヘルプ ページを呼び出したいと思います。コマンドを実行して 1 つのインストーラー ウィザード ページからヘルプ ウィンドウを開くと正常にhh.exe -mapid 1234 MyAppCutDownHelp.chm動作しますが、後で別のウィザード ページから同じことを行うと、hh.exe -mapid 5678 MyAppCutDownHelp.chmそのトピックは OK になりますが、HH.EXE の別のインスタンスが開始され、トピック 1234 とトピック 5678 の 2 つのヘルプ ウィンドウがあります。

HH.exe の最初の呼び出しで CHM ヘルプ ウィンドウを開き、それ以降、インストーラーから正常なヘルプ ウィンドウ内に後続のヘルプ トピックが表示されるようにしたいと考えています。

Inno Setup スクリプト Pascal から、通常は Delphi からアクセスできるのと同じ HTML ヘルプ API にアクセスできるとは思えません。

現在、ヘルプエンジンを開始しています

ShellExecAsOriginalUser ('open', ExpandConstant ('{tmp}\MyAppCutDownHelp.chm'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) ;

しかし、HH.exeを呼び出すだけだと思います。

更新@Robertの回答に基づく私の最新の試みは次のとおりです。

; -- Help Test.iss --

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
Compression=lzma2
SolidCompression=yes
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

[Code]

const
 HH_DISPLAY_TOPIC = 0;
 HH_DISPLAY_TOC =1;
 HH_DISPLAY_INDEX =2;
 HH_HELP_CONTEXT = 15;

function HtmlHelpA (hWndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT; dwData: DWORD): HWnd; 
  external 'HtmlHelpA@hhctrl.ocx stdcall';

function HtmlHelp(hWndCaller: HWND; pszFile: String; uCommand: UINT; dwData: DWORD): HWnd; 
begin
  try
    result := HtmlHelpA(hWndCaller,pszFile,uCommand,dwData);
  except
     MsgBox('Unable To Display Help file.', mbError, MB_OK);    
  end;
end;


function InitializeSetup : Boolean;
begin
  HtmlHelp(0,'MyProg.chm',HH_DISPLAY_TOC,0);
  result := true;

end;
4

2 に答える 2

2

HtmlHelpAまたはHtmlHelpW関数を使用できますhhctrl.ocx

これはMSDNに記載されています。

; -- Example1.iss --
; Demonstrates copying 3 files and creating an icon.

; SEE THE DOCUMENTATION FOR DETAILS ON CREATING .ISS SCRIPT FILES!

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
Compression=lzma2
SolidCompression=yes
OutputDir=userdocs:Inno Setup Examples Output

[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"; Flags: isreadme

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"

[Code]
const
 HH_DISPLAY_TOPIC = 0;
 HH_DISPLAY_TOC =1;
 HH_DISPLAY_INDEX =2;
 HH_HELP_CONTEXT = 15;

function HtmlHelpA (hWndCaller: HWND; pszFile: PAnsiChar; uCommand: UINT; dwData: DWORD): HWnd; 
  external 'HtmlHelpA@hhctrl.ocx stdcall';

function HtmlHelp(hWndCaller: HWND; pszFile: String; uCommand: UINT; dwData: DWORD): HWnd; 
begin
  try
    result := HtmlHelpA(hWndCaller,pszFile,uCommand,dwData);
  except
     MsgBox('Unable To Display Help file.', mbError, MB_OK);    
  end;
end;


function InitializeSetup : Boolean;
begin
  HtmlHelp(0,'C:\Program Files (x86)\Inno Setup 5\ISetup.chm',HH_DISPLAY_TOC,0);
  result := true;
end;
于 2011-06-06T04:58:54.737 に答える