我在Inno安装程序中使用了VCL样式,试图为我的安装程序设置外观并遇到一个小问题,我希望有人可以提供帮助。
我需要提前道歉。我已经糊涂了一段时间,在这里和那里拍摄一些东西,让它以我想要的方式在我的安装程序中工作,并且在编程方面绝不是一个大师。事实上,它给了我偏头痛,但我必须以某种方式完成它。简而言之,我的编码无论如何都不是专家,但我会尝试完成任务。
我一直在使用我在2008年制作的安装程序。就在最近,我想添加它,让它更自动地做事,提供越来越有见地的提示,并且看起来更好。
当我第一次使用Sherlock Software时,我添加了InnoTools Downloader,并且从那时起就使用了它,并且没有任何问题。
我刚刚添加了VCL样式,InnoTools Downloader中有一个元素,我完全不知道如何与其他安装程序一起使用。其他一切看起来都很棒,但下载页面中的小盒子是灰色的。
所以,我尝试了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'
我正在使用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).dll文件中的任何一个都可以以与链接页面(和原始VCL .dll文件)类似的方式加载吗? 4)使用Inno Setup的Unicode版本会给我任何其他解决方法吗(只要我不必在原始安装程序上重写一大堆代码)?
我很抱歉,我现在真的不理解与新页面有关的任何事情。我对安装程序所做的大部分工作都使用MsgBox,以避免在有新的更新和其他可能需要用户输入的通知的情况下处理它们。
如果有帮助的话,我会从我的一个安装程序中收集一个示例代码,如果请求可以发布。对于任何真正的程序员来说,甚至看起来并且不想让每个人都头疼(或者是厌恶地摇头wh),这可能是一个很大的混乱,但只是让我知道它是否有用或者我已经放了什么这足以解释我遇到的问题。
如果我能获得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安装。
编辑:添加图片(感谢您的积分)。忽略有关下载失败的错误,我这样做会停止并弹出一个框以捕获窗口和弹出窗口的皮肤。
答案 0 :(得分:3)
VCL Styles for Inno setup插件只能在这些创新控件上应用样式
TPanel
因此您无法将皮肤应用于InnoTools Downloader
插件使用的第三方组件。无论如何,您可以在项目的issue page中请求此类功能。
答案 1 :(得分: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样式错误报告尚无回复:https://code.google.com/p/vcl-styles-plugins/issues/detail?id=5&can=1
答案 2 :(得分:0)
我实际上写了你正在使用的代码。我写了一会儿,所以我对它几乎不熟悉了,但问题是你没有使用Inno Setup的Unicode版本,就像我写这篇文章时那样。它并不总是非常简单地转换到Unicode版本,您可能需要对您的项目做很多调整。但WideString
类型仅在Unicode版本中可用(因为它是unicode类型)。