使用 Inno Setup Compiler 创建的安装程序不显示最小化动画

问题描述 投票:0回答:1

我的问题是为什么 Inno Setup 编译器(Unicode 或 ANSI)和它制作的任何设置都不会像其他 Windows 程序那样最小化显示漂亮的最小化动画?

它显示了一个非常基本的最小化动画......为什么?

我知道

Borland Delphi
是Inno Setup Compiler的编译器,但是
Borland Delphi
没有那么糟糕的最小化动画...........它正常最小化为Windows系统Windows最小化(例如资源管理器,计算机) ,控制面板).................

我还注意到 Windows Installer Creater

Nullsoft Scriptable Install System - NSIS
和使用它进行的设置也像我所说的那样最小化了。

如何解决这个问题?

更新的问题

我还添加了一段代码来播放漂亮的缩放最小化/恢复动画,可以在 Inno Setup 的

WizardForm
上的许多 Windows 应用程序中看到,但是当我将此代码添加到 Inno Setup 编译器的源代码后单击
WizardForm
的最小化按钮时代码,尼斯缩放动画不会播放,并且永远无法使用它最小化,只能在添加此代码后使用任务栏按钮最小化。所以这意味着这段代码不起作用或有其他错误......为什么这不起作用???

我添加到单元的代码

WizardForm

interface

uses
  Windows;

type
  TTrayZoom = class(TObject)
  private
    class function GetTrayRect: TRect;
    class procedure DoZoom(const Wnd: HWND; const Src, Dest: TRect);
  public
    class procedure ZoomToTray(const Wnd: HWND);
    class procedure ZoomFromTray(const Wnd: HWND);
  end;

implementation

class procedure TTrayZoom.DoZoom(const Wnd: HWND; const Src, Dest: TRect);
begin
  DrawAnimatedRects(Wnd, IDANI_CAPTION, Src, Dest);
end;

class function TTrayZoom.GetTrayRect: TRect;
var
  TaskbarWnd, TrayWnd: HWND;
begin
  TaskbarWnd := FindWindow('Shell_TrayWnd', nil);
  TrayWnd := FindWindowEx(TaskbarWnd, 0, 'TrayNotifyWnd', nil);
  GetWindowRect(TrayWnd, Result);
end;

class procedure TTrayZoom.ZoomFromTray(const Wnd: HWND);
var
  WndRect: TRect;
begin
  GetWindowRect(Wnd, WndRect);
  DoZoom(Wnd, GetTrayRect, WndRect);
end;

class procedure TTrayZoom.ZoomToTray(const Wnd: HWND);
var
  WndRect: TRect;
begin
  GetWindowRect(Wnd, WndRect);
  DoZoom(Wnd, WndRect, GetTrayRect);
end;

我从

TTrayZoom.ZoomToTray
呼叫
if WMSysCommand..... = SCMINIMIZE
,从
TTrayZoom.ZoomFromTray
呼叫
if WMSysCommand..... = SCRESTORE
,并将
HWND
参数设置为
WizardForm.Handle

但是这些代码从来都不起作用,我什至不知道它们是否被调用。 :(

在此

WizardForm
中播放缩放动画有什么问题?

inno-setup restore minimize
1个回答
1
投票

我想说有两个问题。

  1. 对于具有任务栏按钮的窗口会显示动画。向导表单没有任务栏按钮。

    安装程序的任务栏按钮属于隐藏的主窗口。

    从历史上看,安装程序具有全屏背景渐变蓝色窗口。甚至 Inno Setup 也支持这一点。

    虽然默认情况下不再启用该背景窗口(

    WindowVisible
    指令在现代版本的 Inno Setup 中默认为
    No
    ),但它仍然存在并拥有任务栏按钮。

  2. Inno Setup 是使用古老版本的 Delphi 构建的,可能无法很好地使用最小化功能。

一般来说,我建议您应该提交功能请求/错误报告来解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.