我的产品非常依赖社区并且非常基础,所以我希望在我的设置向导的左下角实现一些带有链接的按钮(捐赠链接和 github 链接)。
我在这里看到了类似的问题(如何在向导窗口的左下角添加图像横幅?),但无法像 Inno Setup 本身的向导中那样完全获得可点击的链接,它只是 一个 位图图像。我不确定是否需要将马丁在前面提到的问题中的答案与“如何添加可点击图像”或“如何添加超链接”问题之一的其他答案结合起来,但我需要一些帮助想出了一个类似于 Inno Setup 按钮的解决方案。
Inno 设置示例
使用 GitHub
上/issrc 中的
setup.iss
和 isdonateandmail.iss
脚本作为示例,我能够重新创建不同大小的按钮,位置略有改变,同时还添加了第三个按钮。
就像在
Inno Setup 的setup.iss
脚本中一样,我使用 #include
将 buttons.iss
脚本添加到我现有的主脚本中,使我的代码易于解析。
// How to add the separate script to your existing main script
#include "TLS_Buttons.iss"
[Setup]
AppName=My Program
AppVersion=1.5
// ...
其他一切都应该很容易理解,但这里有一个简短的解释:
[CustomMessages]
部分包含将鼠标悬停在按钮图像上时显示的文本,将使用TBitmapImage.Hint
调用这些文本
OnClick
程序将是您的图像/按钮链接到的地方
通过预先调用
<event('InitializeWizard')>
,您可以重命名 InitializeWizard
过程,并避免[重复]错误(如果您的主脚本中已经有 InitializeWizard
过程)
如果您仍然为此苦苦挣扎,请随时对此帖子或此答案发表评论。我不能保证我会很快回复,但我会尽力。
[Files]
Source: "donate.bmp"; Flags: dontcopy noencryption
Source: "discord.bmp"; Flags: dontcopy noencryption
Source: "github.bmp"; Flags: dontcopy noencryption
[CustomMessages]
DonateHint=Donate to support The Lewd Series - Thank you!
DiscordHint=Community Discord
GitHubHint=GitHub Repository
[Code]
procedure DonateImageOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExecAsOriginalUser('open', 'https://www.paypal.com/us/home', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
procedure DiscordImageOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExecAsOriginalUser('open', 'https://discord.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
procedure GithubImageOnClick(Sender: TObject);
var
ErrorCode: Integer;
begin
ShellExecAsOriginalUser('open', 'https://github.com/', '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode);
end;
<event('InitializeWizard')> // Allows for 'InitializeWizard' to be used in Main Script without raising duplicate error
procedure TLSButtonsInitializeWizard;
var
ImageFileName: String;
DonateImage, DiscordImage, GithubImage: TBitmapImage;
BevelTop: Integer;
begin
if WizardSilent then
Exit;
ImageFileName := ExpandConstant('{tmp}\donate.bmp');
ExtractTemporaryFile(ExtractFileName(ImageFileName));
DonateImage := TBitmapImage.Create(WizardForm);
DonateImage.AutoSize := True;
DonateImage.Bitmap.LoadFromFile(ImageFileName);
DonateImage.Hint := CustomMessage('DonateHint');
DonateImage.ShowHint := True;
DonateImage.Anchors := [akLeft, akBottom];
BevelTop := WizardForm.Bevel.Top;
DonateImage.Top := BevelTop + (WizardForm.ClientHeight - BevelTop - DonateImage.Bitmap.Height) div 2 + ScaleY(3);
DonateImage.Left := DonateImage.Top - BevelTop - ScaleX(5);
DonateImage.Cursor := crHand;
DonateImage.OnClick := @DonateImageOnClick;
DonateImage.Parent := WizardForm;
ImageFileName := ExpandConstant('{tmp}\discord.bmp');
ExtractTemporaryFile(ExtractFileName(ImageFileName));
DiscordImage := TBitmapImage.Create(WizardForm);
DiscordImage.AutoSize := True;
DiscordImage.Bitmap.LoadFromFile(ImageFileName);
DiscordImage.Hint := CustomMessage('DiscordHint');
DiscordImage.ShowHint := True;
DiscordImage.Anchors := [akLeft, akBottom];
DiscordImage.Top := DonateImage.Top
DiscordImage.Left := DonateImage.Left + DonateImage.Width + ScaleX(10);
DiscordImage.Cursor := crHand;
DiscordImage.OnClick := @DiscordImageOnClick;
DiscordImage.Parent := WizardForm;
ImageFileName := ExpandConstant('{tmp}\github.bmp');
ExtractTemporaryFile(ExtractFileName(ImageFileName));
GithubImage := TBitmapImage.Create(WizardForm);
GithubImage.AutoSize := True;
GithubImage.Bitmap.LoadFromFile(ImageFileName);
GithubImage.Hint := CustomMessage('GitHubHint');
GithubImage.ShowHint := True;
GithubImage.Anchors := [akLeft, akBottom];
GithubImage.Top := DiscordImage.Top
GithubImage.Left := DiscordImage.Left + DiscordImage.Width + ScaleX(10);
GithubImage.Cursor := crHand;
GithubImage.OnClick := @GithubImageOnClick;
GithubImage.Parent := WizardForm;
end;
我的按钮示例,没有添加透明度,我将背景颜色与
WizardForm
匹配