Inno Setup window 在任务栏中预览
Inno Setup window preview in taskbar
当您将鼠标悬停在任务栏内的图标上时,所有程序和打开的文件都有预览。
但是对于 Inno Setup 制作的安装程序,似乎没有预览。有解决这个问题的方法或技巧吗?
虽然一些具有自定义设计的游戏安装程序(使用 Inno Setup)在任务栏中有预览。例如:
http://fs2.filegir.com/cuttlas/setup.exe
我认为这是因为任务栏按钮 link 被设置到 Inno Setup 的一个不可见的内部 window 而不是可见的向导 window。这也解释了为什么任务栏按钮的标题可能与向导 window 不同。请注意,它们始终与 windows 匹配,其中预览有效。
如果不修改 Inno Setup 本身的代码,您无能为力。
您发布的 link 不是标准的 Inno Setup。请注意其日志文件中的 "5.5.1*.ee2**"*。他们可能对 Inno Setup 进行了重大修改。请注意,当(在 Windows 10 中)将鼠标悬停在预览 window 上时,向导 window 保持可见(其他 windows 模糊)。使用标准 Inno Setup 时,所有 windows 模糊,包括向导。这是因为他们的任务栏按钮 linked 到向导 window。在标准 Inno Setup 中,它不是。
我找到了一个很棒的库来解决这个问题:
https://mega.co.nz/#F!RcQkhSxI!_ZsnpdapAeoVVWEgVw2iMQ
使用 WinTB v2.0
您可以轻松打开任务栏上的预览:
#include "WinTB.iss"
[Setup]
AppName=Wintb.dll example
AppVersion=2.0
DefaultDirName={pf}\Wintb.dll example
DefaultGroupName=Wintb.dll example
OutputDir=.
[files]
Source: wintb.dll; Flags: dontcopy;
[code]
procedure InitializeWizard();
begin
ExtractTemporaryFile('wintb.dll');
Win7TaskBar11();
end;
没有任何外部插件或dll,可以通过这个技巧解决:
[Code]
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongW@user32.dll stdcall';
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
Function GetWindow (HWND: Longint; uCmd: cardinal): Longint;external 'GetWindow@user32.dll stdcall';
procedure InitializeWizard();
begin
SetWindowLong(WizardForm.Handle, -8,GetWindowLong(GetWindow(WizardForm.Handle, 4),-8));
end;
当您将鼠标悬停在任务栏内的图标上时,所有程序和打开的文件都有预览。
但是对于 Inno Setup 制作的安装程序,似乎没有预览。有解决这个问题的方法或技巧吗?
虽然一些具有自定义设计的游戏安装程序(使用 Inno Setup)在任务栏中有预览。例如:
http://fs2.filegir.com/cuttlas/setup.exe
我认为这是因为任务栏按钮 link 被设置到 Inno Setup 的一个不可见的内部 window 而不是可见的向导 window。这也解释了为什么任务栏按钮的标题可能与向导 window 不同。请注意,它们始终与 windows 匹配,其中预览有效。
如果不修改 Inno Setup 本身的代码,您无能为力。
您发布的 link 不是标准的 Inno Setup。请注意其日志文件中的 "5.5.1*.ee2**"*。他们可能对 Inno Setup 进行了重大修改。请注意,当(在 Windows 10 中)将鼠标悬停在预览 window 上时,向导 window 保持可见(其他 windows 模糊)。使用标准 Inno Setup 时,所有 windows 模糊,包括向导。这是因为他们的任务栏按钮 linked 到向导 window。在标准 Inno Setup 中,它不是。
我找到了一个很棒的库来解决这个问题:
https://mega.co.nz/#F!RcQkhSxI!_ZsnpdapAeoVVWEgVw2iMQ
使用 WinTB v2.0
您可以轻松打开任务栏上的预览:
#include "WinTB.iss"
[Setup]
AppName=Wintb.dll example
AppVersion=2.0
DefaultDirName={pf}\Wintb.dll example
DefaultGroupName=Wintb.dll example
OutputDir=.
[files]
Source: wintb.dll; Flags: dontcopy;
[code]
procedure InitializeWizard();
begin
ExtractTemporaryFile('wintb.dll');
Win7TaskBar11();
end;
没有任何外部插件或dll,可以通过这个技巧解决:
[Code]
function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongW@user32.dll stdcall';
function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
Function GetWindow (HWND: Longint; uCmd: cardinal): Longint;external 'GetWindow@user32.dll stdcall';
procedure InitializeWizard();
begin
SetWindowLong(WizardForm.Handle, -8,GetWindowLong(GetWindow(WizardForm.Handle, 4),-8));
end;