close
文章出處

ISSkin是Code jock 公司出品的Inno Setup 皮膚插件,用于為Inno制作的安裝程序提供皮膚功能。 

自Delphi發布2009之后,Inno Setup 開始出現支持Unicode編碼的版本,即5.3.x系列,并且官方同時提供Ansi和Unicode版本。 

如果了解Delphi 2009的朋友,應該就很了解這一版本對Unicode的支持,這里不多做介紹了。 

Unicode版的Inno Setup腳本中會將所有字符串存儲為Unicode字符串,使用雙字節編碼,包括ASCII碼,如果調用為早期Ansi版開發的插件的話,涉及到字符串String,應該顯式修改為AnsiString,這樣才能保證Unicode字符串正確轉換為Ansi字符串。 

這里要解決由此而導致的問題。 

現在的ISSkin最新版本是2.0.0,字符串使用Ansi編碼,所以需要將官方主頁上介紹的Code代碼段進行修改。 

這里介紹使用ISSkin對Unicode版的Inno Setup制作的安裝程序添加皮膚。 

第一步,在File段添加插件ISSkin的動態鏈接庫ISSkin.dll和皮膚文件

例如:

[Files] Source: ISSkin.dll; DestDir: {app}; Flags: dontcopy Source: Office2007.cjstyles; DestDir: {tmp}; Flags: dontcopy

第二步,在Code段聲明API,注意這里將原String修改為AnsiString

例如: 

[Code] procedure LoadSkin(lpszPath: AnsiString; lpszIniFileName: AnsiString);external 'LoadSkin@files:isskin.dll stdcall'; procedure UnloadSkin();external 'UnloadSkin@files:isskin.dll stdcall'; function ShowWindow(hWnd: Integer; uType: Integer): Integer; external 'ShowWindow@user32.dll stdcall';

第三步,重載InitializeSetup和DeinitializeSetup兩個函數以調用ISSkin插件功能

例如: 

procedure DeinitializeSetup(); begin    ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0);    UnloadSkin(); end;

好了,現在截個圖吧,看看效果。 

2009-10-27 11-51-51

 
 
 
 

不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 AutoPoster 的頭像
    AutoPoster

    互聯網 - 大數據

    AutoPoster 發表在 痞客邦 留言(0) 人氣()