我在安装程序中包含一个简化的CHM帮助,我希望安装程序向导的每个页面上的帮助按钮可以调用不同的帮助页面。如果我通过执行命令hh.exe -mapid 1234 MyAppCutDownHelp.chm
从一个安装程序向导页面打开帮助窗口,它可以正常工作,但如果稍后从另一个向导页面执行相同的操作并返回hh.exe -mapid 5678 MyAppCutDownHelp.chm
,那么我会获得该主题的确定,但会启动另一个HH.EXE实例,然后我有两个帮助窗口,一个是主题1234,一个是主题5678.在不打开另一个窗口的情况下跳到CHM帮助文件中的主题
我想第一次调用HH.exe打开CHM帮助窗口,然后从后面的帮助主题中显示从安装程序的理智帮助窗口。
我不相信我可以从Inno Setup脚本Pascal访问同样的HTML帮助API,我通常会从Delphi获得。
我目前正与
ShellExecAsOriginalUser ('open', ExpandConstant ('{tmp}\MyAppCutDownHelp.chm'), '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) ;
启动帮助引擎,但我想,只是调用HH.EXE。
更新这是我基于@罗伯特的回答最新尝试:
; -- 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 '[email protected] 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'找不到。虽然我没有收到错误。 – 2011-06-07 04:08:45