【发布时间】:2011-06-05 23:30:49
【问题描述】:
我在安装程序中包含一个精简的 CHM 帮助,我希望安装程序向导的每个页面上的帮助按钮都能调出不同的帮助页面。如果我通过执行命令hh.exe -mapid 1234 MyAppCutDownHelp.chm 从一个安装程序向导页面打开帮助窗口,它可以正常工作,但如果我稍后从另一个向导页面使用hh.exe -mapid 5678 MyAppCutDownHelp.chm 执行相同的操作,我会得到该主题,但另一个 HH 实例。 EXE 启动,然后我有两个帮助窗口,一个主题为 1234,一个主题为 5678。
我希望第一次调用 HH.exe 以打开 CHM 帮助窗口,然后在安装程序的正常帮助窗口中显示后续帮助主题。
我不相信我可以从 Inno Setup 脚本 Pascal 访问相同的 HTML 帮助 API,而我通常会从 Delphi 获得。
我目前正在使用
启动帮助引擎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;
【问题讨论】:
-
使用你的代码我什么也得不到。找不到“Myprog.chm”。不过我没有收到错误消息。
标签: inno-setup chm shellexecute html-help