DLLライブラリの関数名では大文字と小文字が区別され、そのInnoSetupスクリプトの関数名の代わりにエイリアスを使用しています。スクリプトを変更して、大文字と小文字を適切に区別して関数名を使用し、スクリプトを機能させるようにします。インポートされる関数の名前は、キーワードimporttailの@
charの前の単語です。external
たとえば、次の関数インポートサンプルでは、インポートされた関数の名前はnewwebwnd
、ではなく、NewWebWnd
です。
function NewWebWnd(hWndParent: HWND; X, Y, nWidth, nHeight: Integer): HWND;
external 'newwebwnd@files:webctrl.dll stdcall';
したがって、あなたの場合、関数名を次のように変更すれば問題ありません。
...
System::Call "webctrl::newwebwnd(i $hCtl_dialog, i 0, i 0, i 150, i 150) i.s"
Pop $browser
System::Call "webctrl::displayhtmlpage(i $browser, t 'http://www.google.com/') b.s"
Pop $R0
...
インストールページ内に拡張されたコントロールのスクリプト全体は、WebCtrl
次のようになります。
!include "nsDialogs.nsh"
OutFile "Setup.exe"
RequestExecutionLevel user
InstallDir $DESKTOP\WebBrowserSetup
Page directory
Page custom InitializeWebBrowserPage
var hDialog
var hBrowser
Function InitializeWebBrowserPage
InitPluginsDir
SetOutPath $PLUGINSDIR
File "webctrl.dll"
nsDialogs::Create 1018
Pop $hDialog
; get the page client width and height
System::Call "*(i, i, i, i) i.r0"
System::Call "user32::GetClientRect(i $hDialog, i r0)"
System::Call "*$0(i, i, i.r1, i.r2)"
System::Free $0
; create a web browser window stretched to the whole page client rectangle
; and navigate somehwere; note that you should add some error handling yet
System::Call "webctrl::newwebwnd(i $hDialog, i 0, i 0, i $1, i $2) i.s"
Pop $hBrowser
System::Call "webctrl::displayhtmlpage(i $hBrowser, t 'http://www.google.com') b.s"
Pop $R0
nsDialogs::Show
FunctionEnd
Section ""
SectionEnd