我遇到了问题,我需要你的帮助..我想找到一种不同的方式来放置透明的启动画面或修正我的代码。这里的代码有效...但是有一个问题,有些人在安装结束时遇到错误。
这是在安装结束时查看错误的方式
我在我的代码中检查了另一行,我发现问题是启动画面的代码,如果我删除它,安装程序工作完美,我看到我需要的是procedure DeinitializeSetup();
但我不知道我知道如何把它放在启动画面部分,如果我删除其他代码中的procedure DeinitializeSetup();
,如皮肤,徽标等,我会遇到这种错误。转到Windows临时文件夹的文件..那么我需要的是启动画面代码中的procedure DeinitializeSetup();
来解决这个问题...... :(这里是任何人都可以测试的dll文件IsUtilsHb.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;
答案 0 :(得分:1)
在浏览了整个互联网后,我得到了这个解决方案:
这是我使用的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;
答案 1 :(得分: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
一样,你看起来像一个雷电图像