2013-01-08 142 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

相關問題