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

时间:2016-07-16 12:18:20

标签: inno-setup restore minimize

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

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

我知道Borland Delphi作为Inno Setup Compiler的编译器,但Borland Delphi没有这么糟糕的Minimize Animation ............它最小化,因为Windows系统Windows最小化(如资源管理器,计算机,控制面板).................

我还注意到Windows Installer Creater Nullsoft Scriptable Install System - NSIS和使用它的设置也像我说的那样最小化。

如何解决此问题?

更新的问题

我还添加了一个代码,可以在Inno Setup的WizardForm上的许多Windows应用程序中看到很好的缩放最小化/恢复动画,但是当我添加这个后点击WizardForm的最小化按钮代码到Inno Setup Compiler的源代码,Nice Zooming动画无法播放,它永远不能使用它进行最小化,只有在添加此代码后才能使用任务栏按钮进行最小化。所以这意味着这段代码不起作用或其他任何错误...........为什么这不起作用???

我添加到单位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..... = SCRESTOREHWND拨打WizardForm.Handle

但那些代码永远不会奏效,我甚至不知道他们是否会被召唤。 :(

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

1 个答案:

答案 0 :(得分:1)

我想说有两个问题。

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

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

    历史上,安装程序具有全屏背景渐变蓝色窗口。甚至Inno Setup都支持。

    enter image description here

    虽然默认情况下不再启用该背景窗口(现代版本的Inno Setup中WindowVisible directive默认为No),但它仍然存在且拥有任务栏按钮。

  2. Inno Setup是使用古老版本的Delphi构建的,可能与最小化功能不相称。

  3. 一般来说,我会说你应该提交功能请求/错误报告来解决这个问题。