我在安裝程序中包含一個簡化的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