2013-01-08 103 views
0

我想预安装inno安装程序的字体。我使用字体Aller Light制作了一个自定义的inno安装程序安装程序。现在,当我在客户机上首次运行我的inno安装程序时。 由于字体的原因,设计并不合适..但是当安装程序再次运行时,设计才会合适。如何使用inno安装程序安装字体

只是为了更清楚地说明,这种字体用于我的安装程序的设计中,而不是使用此安装程序部署的应用程序中。 我只需要一种方法来在安装程序可执行文件打开欢迎页面之前在客户机上安装字体,以便我为自定义设置所做的设计是适当的。

回答

7

这是一个坏主意;在“真正的”安装阶段开始之前修改用户的系​​统是不好的做法。您应该强烈考虑重新设计以使用系统标准字体或使用所需样式的文本的位图图像,而不是尝试安装字体。

Inno有一种机制来安装字体作为安装本身的一部分,这对于您的应用程序来说足够了(请参阅FontInstall)。

如果你真的往下走坏的实践路径,你也许可以得到的东西与一些InitializeSetup代码调用ExtractTemporaryFileAddFontResource WinAPI工作。 (不要忘了发送广播消息。)

+0

感谢Miral,我尝试过使用上面的方法,但没有任何帮助..如何在脚本中调用AddFontResource方法..我用下面的函数.. ExtractTemporaryFile('aller_lt .TTF'); AddFontResource('aller_lt.TTF');和Addfontresource被定义为:function AddFontResource(FileName:PAnsiChar):Integer;外部'[email protected] stdcall'; SendMessage(HWND_BROADCAST,$ 1D,0,0); –

+0

当您调用'ExtractTemporaryFile'时,它将被提取到'{tmp}'。您必须从那里(使用'FileCopy')将它复制到'{fonts}'文件夹,并使用完整的路径名称(不要忘记调用'ExpandConstant')注册它,如果您希望它是永久性的。这与Inno标准的'FontInstall'方法将使用的过程相同。或者,您可以使用[AddFontResourceEx](http://msdn.microsoft.com/en-us/library/windows/desktop/dd183327.aspx)替代FR_PRIVATE标志将其注册为临时字体。那么你不需要复制它或广播(但你仍然需要'{tmp}')。 – Miral

相关问题