내 구성 요소 (다소 OneClick 설치 프로그램)로 복잡한 양식을 만들어야합니다. 표준 InnoSetup 마법사. 가능한가?InnoSetup : 표준 설정 마법사 대신 DLL에서 내 사용자 정의 델파이 폼을 열 수 있습니까?
내 양식이 DLL에 저장되며이 DLL은 InnoSetup 프로세스에서 사용할 수 있습니다.
이
내가 그렇게하려고 노력하는 방법입니다델파이 DLL 코드를
library OneClickWizard;
uses
SysUtils,
Classes,
Wizard in 'Wizard.pas' {FormWizard};
{$R *.res}
exports
CreateWizardForm,
DestroyWizardForm;
begin
end.
델파이 양식
unit Wizard;
interface
type
TFormWizard = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
FormWizard: TFormWizard;
procedure CreateWizardForm(AppHandle: THandle); stdcall;
procedure DestroyWizardForm; stdcall;
implementation
{$R *.dfm}
procedure CreateWizardForm(AppHandle: THandle);
begin
Application.Handle := AppHandle;
FormWizard := TFormWizard.Create(Application);
FormWizard.Show;
FormWizard.Refresh;
end;
procedure DestroyWizardForm;
begin
FormWizard.Free;
end;
InnoSetup 스크립트 (ISS)
[Setup]
;Disable all of the default wizard pages
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyMemo=true
DisableReadyPage=true
DisableStartupPrompt=true
DisableWelcomePage=true
DisableFinishedPage=true
[Files]
Source:"OneClickWizard.dll"; Flags: dontcopy
[Code]
procedure CreateWizardForm(AppHandle: Cardinal);
external '[email protected]:OneClickWizard.dll stdcall';
procedure DestroyWizardForm;
external '[email protected]:OneClickWizard.dll stdcall';
procedure InitializeWizard();
begin
CreateWizardForm(MainForm.Handle);
end;
양식이 화면에 나타나지만 내 입력에 반응하지 않습니다. 그것은 주요 메시지주기를 벗어난 것 같습니다. 이 작업을 올바르게 수행하는 방법은 무엇입니까?
수치! ShowModal을 사용해야합니다 – Andrew