inno-setup - Inno Setup 的 VCL 样式在为某些下载器页面元素设置外观时遇到问题

标签 inno-setup pascalscript vcl-styles inno-download-plugin inno-tools-downloader

我在 Inno Setup 中使用了 VCL 样式,试图尝试为我的安装程序设置外观,但遇到了一个小问题,希望有人能够提供帮助。

我需要提前道歉。我一直在纠结这些,在这里和那里拍摄一些东西,让它按照我想要的方式在我的安装程序中工作,并且在编程方面绝不是专家。事实上,它让我偏头痛,但我必须以某种方式完成它。简而言之,我的编码无论如何都不是专家,但我努力把事情做好。

我一直在使用我在 2008 年某个时候制作的安装程序。就在最近我想添加它,让它更自动地做事,有更少和更深入的提示,并且看起来更好。

我在第一次制作时添加了 Sherlock Software 的 InnoTools Downloader,从那时起就一直使用它,没有任何问题。

我刚刚添加了 VCL 样式,并且 InnoTools Downloader 中有一个元素,我完全不知道如何与安装程序的其余部分一起设置皮肤。其他一切看起来都很棒,但下载页面内的小盒子是灰色的。

enter image description here

所以,我尝试了 Mitrich Software 的 Inno Download Plugin。嘿,灰色框不见了,但它会剥 shell 。错误窗口文本在白色背景上呈浅灰色,无法读取。

enter image description here

我做了更多的搜索,找到了 How to apply VCL styles to DLL-based forms .当我尝试使用 Sherlock Software 加载 InnoTools Downloader 时:

procedure DllLoadStyle(const StyleFilename: WideString);
  external 'DllLoadStyle@files:itdownload.dll stdcall';

我刚刚收到错误:未知类型“WideString”

我正在使用 Inno Setup 的 ANSI 版本,因为当我多年前最初尝试 Unicode 版本时,它搞砸了 InnoTools 下载器,从那时起我一直在使用 ANSI。

我尝试将 WideString 更改为 String,以匹配 VCL 已经使用的格式:
procedure LoadVCLStyle(VClStyleFile: String);
  external 'LoadVCLStyleA@files:VclStylesInno.dll stdcall';

但是,不幸的是,在运行安装程序时给了我一个错误:
Runtime Error (at -1:0):
Cannot Import dll:C:\...\Temp\is-XXXXX.tmp\itdownloaded.dll

1)我想知道我是否因为两个下载器都使用外部 .dll 而不想让这部分皮肤变得不走运?
2) 有没有办法让 VCL 为页面上的元素设置外观?
3) 是否可以以与链接页面(和原始 VCL .dll 文件)类似的方式加载任何一个 .dll 文件?
4) 使用 Inno Setup 的 Unicode 版本是否会给我任何解决此问题的其他方法(只要我不必在原始安装程序上重写一大堆代码)?

非常抱歉,目前我真的不明白与新页面有什么关系。我对安装程序所做的大部分工作都使用 MsgBox 来避免在有新更新和其他可能需要用户输入的此类通知的情况下处理它们。

如果有帮助,我将从我的一个安装程序中获取的示例代码放在一起,并且可以在需要时发布。对于任何真正的程序员来说,这可能是一团糟,甚至不想让每个人都头疼(或厌恶地摇头),但请告诉我它是否有帮助或我已经放了什么这足以解释我遇到的问题。

如果我设法获得 10 个声望,我也可以发布示例图片(如果有帮助)。

我总是可以忍受它,但真的很想解决这个问题,如果有任何不清楚的地方,我提前道歉,因为这是我的第一个问题。

在此先感谢您的任何帮助和见解。

Inno Setup 1.2.2.1/Inno Setup 5.5.5a 的 VCL 样式从 ispack-5.5.5.exe/InnoTools Downloader 0.3.5/Inno Download Plugin 1.4.0 安装。

编辑:添加了图像(感谢您提供的点)。忽略关于下载失败的错误,我这样做是为了它会停止并弹出一个框来捕获窗口和弹出窗口的皮肤。

最佳答案

VCL Styles for Inno setup插件只能在这些 inno 控件上应用样式

  • TNewEdit
  • 编辑
  • TPassword编辑
  • 新备忘录
  • 新组合框
  • 新建列表框
  • 列表框
  • 新按钮
  • TNewCheckBox
  • TNewRadioButton
  • 选择文件夹表单
  • 文件夹 TreeView
  • TStartMenuFolderTreeView
  • TRichEditViewer
  • 新静态文本
  • 新笔记本
  • TNewNotebookPage
  • 面板
    所以你不能像 InnoTools Downloader 使用的那样将皮肤应用到第三方组件上。插入。无论如何,您可以在 issue page 中请求此类功能项目的。
  • 关于inno-setup - Inno Setup 的 VCL 样式在为某些下载器页面元素设置外观时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26235909/

    相关文章:

    fonts - Inno Setup - 如何在安装开始前安装许多字体?

    user-interface - 在 Inno Setup 中提示用户输入要在快捷方式中使用的文件

    delphi - TSaveTextFileDialog 和 Vcl 样式

    installation - 在 Inno Setup 中为登录用户(非管理员用户)创建注册表项

    inno-setup - signtool 失败,inno setup : 0x80070003 - "Store IsDiskFile() failed"

    installation - 使用 CreateAppDir=no 且 PrivilegesRequired=lowest 运行安装程序时“访问被拒绝”

    inno-setup - 在 Inno Setup 中通过部分名称搜索查找窗口

    inno-setup - 如何在 Inno Setup 中检查一个字符串是否以另一个字符串结尾 (EndsWith)

    delphi - 组合框不使用 vcl 样式突出显示颜色。

    delphi - 如何禁用 Delphi 10.1 Berlin 的 PopupMenu/Menu 的 VCL 样式?