4

我使用 VCL Styles for Inno Setup 试图对我的安装程序进行皮肤测试,但遇到了一个小问题,希望有人能提供帮助。

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

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

当我第一次制作时,我添加了 Sherlock Software 的 InnoTools 下载器,并且从那以后一直使用它,真的没有问题。

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

在此处输入图像描述

所以,我尝试了 Mitrich Software 的 Inno Download Plugin。嘿,灰色的盒子不见了,但是很糟糕。错误窗口的文本在白色背景上是浅灰色的,无法读取。

在此处输入图像描述

我做了更多的搜索,发现了 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'

我正在使用 ANSI 版本的 Inno Setup,因为当我多年前最初尝试 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 名声望,如果有帮助,我也可以发布示例图片。

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

提前感谢您的任何帮助和见解。

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

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

4

3 回答 3

3

Inno 设置插件的VCL Styles只能在这些 inno 控件上应用样式

  • TNew编辑

  • 编辑

  • TPassword编辑

  • 新备忘录

  • TNewComboBox

  • 新列表框

  • 列表框

  • TNewButton

  • TNewCheckBox

  • TNewRadioButton

  • TSelectFolderForm

  • TFolderTreeView

  • TStartMenuFolderTreeView

  • TRichEditViewer

  • TNewStaticText

  • TNew笔记本

  • TNewNotebookPage

  • 面板

    InnoTools Downloader因此您不能将皮肤应用于插件使用的第三方组件。无论如何,您可以在项目的问题页面中请求此类功能。

于 2014-10-07T17:34:43.703 回答
1

我实际上编写了您正在使用的这段代码。我前一阵子写的,所以我对它几乎不熟悉了,但问题是你没有像我写它时那样使用 Unicode 版本的 Inno Setup。切换到 Unicode 版本并不总是非常简单,您可能需要对您的项目做很多调整才能进行调整。但该WideString类型仅在 Unicode 版本中可用(因为它是 unicode 类型)。

于 2014-10-07T14:21:12.067 回答
1

更新:Mitrich Software 的 Inno Download Plugin 的作者发布了更新。Inno Download Plugin 1.4.1 修复了弹出窗口的问题,并在没有灰色框的情况下为下载页面设置皮肤。干杯并感谢大家的帮助。

https://groups.google.com/forum/#!topic/inno-download-plugin/DzhRiLYi66c

到目前为止,Sherlock Software 网站的 InnoTools Downloader 上的电子邮件地址被退回。

VCL Styles 错误报告尚未回复:https ://code.google.com/p/vcl-styles-plugins/issues/detail?id=5&can=1

于 2014-10-25T08:54:54.990 回答