2

問題があり、あなたの助けが必要です。透明なスプラッシュ スクリーンを配置する別の方法またはコードの修正を見つけたいです。ここのコードは機能します... しかし問題があり、インストールの最後にエラーが発生する人もいます。

これは、インストールの最後にエラーがどのように見えるかです ここに画像の説明を入力

ここに画像の説明を入力

コードの別の行を確認したところ、スプラッシュ スクリーンのコードに問題があることがわかりました。それを削除すると、インストーラーは完璧に動作します。必要なものは a であることprocedure DeinitializeSetup();がわかりますが、それをスプラッシュスクリーンセクション、スキン、ロゴなどの別のコードを削除すると、この種のエラーが発生procedure DeinitializeSetup();します.Windowsの一時フォルダーに移動するファイル...次に必要なのはprocedure DeinitializeSetup();、スプラッシュスクリーンコードでこれを解決してください... :( 誰でもIsUtilsHb.dllをテストするためのdllファイルです

それから...誰かが透明なスプラッシュスクリーンを置く別の方法を知っているならお願いします...感謝します..またはもっと良い..このコードセクションを修正してください:)

[setup]
AppName=Slash PNG
AppVerName=1.0
DefaultDirName={pf}\program

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

[Files]
Source: IsUtilsHb.dll; DestDir: {app}; Flags: dontcopy
Source: SplashScreen.png; DestDir: {app}; Flags: dontcopy

[Code]
function SplashScreen(hWnd: Integer; pathPng: String; nSleep: Integer): Integer;
external 'SplashScreen@files:IsUtilsHb.dll stdcall';

procedure InitializeWizard();
var 
  SplashFileName: string;
begin
  SplashFileName := ExpandConstant('{tmp}\SplashScreen.png');
  ExtractTemporaryFile('SplashScreen.png');
  SplashScreen(StrToInt(ExpandConstant('{hwnd}')), SplashFileName, 5000);
end;
4

2 に答える 2

2

インターネット全体を見回した後、私はこの解決策を得ました:

これはDLL使用しています: isgsg.dll

[setup]
AppName=Slash PNG
AppVerName=1.0
DefaultDirName={pf}\program

[Languages]
Name: "spanish"; MessagesFile: "compiler:Languages\Spanish.isl"

Source: "Splash.png"; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression
Source: isgsg.dll; DestDir: {tmp}; Flags: ignoreversion dontcopy nocompression

[Code]
procedure ShowSplashScreen(p1:HWND;p2:string;p3,p4,p5,p6,p7:integer;p8:boolean;p9:Cardinal;p10:integer); external 'ShowSplashScreen@files:isgsg.dll stdcall delayload';

procedure InitializeWizard();
begin
  ExtractTemporaryFile('Splash.png');
  ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,3000,1000,0,255,True,$FFFFFF,10);
end;
于 2012-11-03T21:30:40.157 に答える
1

追加したばかり:

ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000,3000,1000,0,255,True,$FFFFFF,10);

解釈:

ShowSplashScreen(WizardForm.Handle,ExpandConstant('{tmp}\Splash.png'),1000(appear time),3000(show time),1000(disappear time),0(like a intermittent reload time),255(transparency 0..255),True,$FFFFFF (transparency color if not png transp),10); 

のようにintermittent reload time = use 9999999、あなたは雷のように見えます

于 2014-04-26T04:56:14.037 に答える