diff --git a/build/build-x64.bat b/build/build-x64.bat index 6b400512..a35069d6 100644 --- a/build/build-x64.bat +++ b/build/build-x64.bat @@ -19,7 +19,7 @@ version -o64 >> xchat-wdk-x64.iss cd .. build\version -r > resource.h echo SetupIconFile=%cd%\xchat.ico >> build\xchat-wdk-x64.iss -type build\xchat-wdk.skel.iss >> build\xchat-wdk-x64.iss +type build\xchat-wdk-x64.skel.iss >> build\xchat-wdk-x64.iss cd src echo DEV = %DEV_64% > makeinc.mak echo X64 = YES >> makeinc.mak diff --git a/build/isskin/watercolorlite-blue.cjstyles b/build/isskin/watercolorlite-blue.cjstyles new file mode 100644 index 00000000..a457029b Binary files /dev/null and b/build/isskin/watercolorlite-blue.cjstyles differ diff --git a/build/isskin/watercolorlite-green.cjstyles b/build/isskin/watercolorlite-green.cjstyles new file mode 100644 index 00000000..2b77026d Binary files /dev/null and b/build/isskin/watercolorlite-green.cjstyles differ diff --git a/build/release-x64.bat b/build/release-x64.bat index 688473de..2f911897 100644 --- a/build/release-x64.bat +++ b/build/release-x64.bat @@ -62,3 +62,5 @@ copy ..\plugins\wmpa\xcwmpa.dll %XCHAT_DEST%\plugins copy %DEPS_ROOT%\bin\lua51.dll %XCHAT_DEST% xcopy /q /s /i ..\po\locale %XCHAT_DEST%\locale xcopy /q /s /i %DEPS_ROOT%\share\locale %XCHAT_DEST%\share\locale +copy "%PROGRAMFILES(X86)%\Codejock Software\ISSkin\ISSkinU.dll" %XCHAT_DEST% +copy isskin\watercolorlite-blue.cjstyles %XCHAT_DEST% diff --git a/build/release-x86.bat b/build/release-x86.bat index 4f2ee107..ebd629f7 100644 --- a/build/release-x86.bat +++ b/build/release-x86.bat @@ -62,3 +62,5 @@ copy ..\plugins\wmpa\xcwmpa.dll %XCHAT_DEST%\plugins copy %DEPS_ROOT%\bin\lua51.dll %XCHAT_DEST% xcopy /q /s /i ..\po\locale %XCHAT_DEST%\locale xcopy /q /s /i %DEPS_ROOT%\share\locale %XCHAT_DEST%\share\locale +copy "%PROGRAMFILES(X86)%\Codejock Software\ISSkin\ISSkinU.dll" %XCHAT_DEST% +copy isskin\watercolorlite-green.cjstyles %XCHAT_DEST% diff --git a/build/xchat-wdk-x64.skel.iss b/build/xchat-wdk-x64.skel.iss index 940b537c..5a366f0a 100644 --- a/build/xchat-wdk-x64.skel.iss +++ b/build/xchat-wdk-x64.skel.iss @@ -65,6 +65,13 @@ Root: HKCR; Subkey: "irc\shell\open\command"; ValueType: string; ValueName: ""; Filename: "{app}\xchat.exe"; Description: "Run XChat-WDK after closing the Wizard"; Flags: nowait postinstall skipifsilent [Files] +; Add the ISSkin DLL used for skinning Inno Setup installations. +Source: ISSkinU.dll; DestDir: {app}; Flags: dontcopy + +; Add the Visual Style resource contains resources used for skinning, +; you can also use Microsoft Visual Styles (*.msstyles) resources. +Source: watercolorlite-blue.cjstyles; DestDir: {tmp}; Flags: dontcopy + Source: "portable-mode"; DestDir: "{app}"; Tasks: portable Source: "cert.pem"; DestDir: "{app}"; Components: libs @@ -82,8 +89,8 @@ Source: "locale\*"; DestDir: "{app}\locale"; Flags: createallsubdirs recursesubd Source: "share\locale\*"; DestDir: "{app}\share\locale"; Flags: createallsubdirs recursesubdirs; Components: translations ;Source: "share\myspell\*"; DestDir: "{app}\share\myspell"; Flags: createallsubdirs recursesubdirs; Components: spelling -Source: "freetype6.dll"; DestDir: "{app}"; Components: libs -Source: "intl.dll"; DestDir: "{app}"; Components: libs +Source: "libfreetype-6.dll"; DestDir: "{app}"; Components: libs +Source: "libintl-8.dll"; DestDir: "{app}"; Components: libs Source: "libatk-1.0-0.dll"; DestDir: "{app}"; Components: libs Source: "libcairo-2.dll"; DestDir: "{app}"; Components: libs @@ -205,3 +212,31 @@ begin end; end; end; + +///////////////////////////////////////////////////////////////////// +// Importing LoadSkin API from ISSkin.DLL +procedure LoadSkin(lpszPath: String; lpszIniFileName: String); +external 'LoadSkin@files:isskinu.dll stdcall'; + +// Importing UnloadSkin API from ISSkin.DLL +procedure UnloadSkin(); +external 'UnloadSkin@files:isskinu.dll stdcall'; + +// Importing ShowWindow Windows API from User32.DLL +function ShowWindow(hWnd: Integer; uType: Integer): Integer; +external 'ShowWindow@user32.dll stdcall'; + +function InitializeSetup(): Boolean; +begin + ExtractTemporaryFile('watercolorlite-blue.cjstyles'); + LoadSkin(ExpandConstant('{tmp}\watercolorlite-blue.cjstyles'), ''); + Result := True; +end; + +procedure DeinitializeSetup(); +begin + // Hide Window before unloading skin so user does not get + // a glimpse of an unskinned window before it is closed. + ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); + UnloadSkin(); +end; diff --git a/build/xchat-wdk-x86.skel.iss b/build/xchat-wdk-x86.skel.iss index 7786dc23..75f92a59 100644 --- a/build/xchat-wdk-x86.skel.iss +++ b/build/xchat-wdk-x86.skel.iss @@ -64,6 +64,13 @@ Root: HKCR; Subkey: "irc\shell\open\command"; ValueType: string; ValueName: ""; Filename: "{app}\xchat.exe"; Description: "Run XChat-WDK after closing the Wizard"; Flags: nowait postinstall skipifsilent [Files] +; Add the ISSkin DLL used for skinning Inno Setup installations. +Source: ISSkinU.dll; DestDir: {app}; Flags: dontcopy + +; Add the Visual Style resource contains resources used for skinning, +; you can also use Microsoft Visual Styles (*.msstyles) resources. +Source: watercolorlite-green.cjstyles; DestDir: {tmp}; Flags: dontcopy + Source: "portable-mode"; DestDir: "{app}"; Tasks: portable Source: "cert.pem"; DestDir: "{app}"; Components: libs @@ -204,3 +211,31 @@ begin end; end; end; + +///////////////////////////////////////////////////////////////////// +// Importing LoadSkin API from ISSkin.DLL +procedure LoadSkin(lpszPath: String; lpszIniFileName: String); +external 'LoadSkin@files:isskinu.dll stdcall'; + +// Importing UnloadSkin API from ISSkin.DLL +procedure UnloadSkin(); +external 'UnloadSkin@files:isskinu.dll stdcall'; + +// Importing ShowWindow Windows API from User32.DLL +function ShowWindow(hWnd: Integer; uType: Integer): Integer; +external 'ShowWindow@user32.dll stdcall'; + +function InitializeSetup(): Boolean; +begin + ExtractTemporaryFile('watercolorlite-green.cjstyles'); + LoadSkin(ExpandConstant('{tmp}\watercolorlite-green.cjstyles'), ''); + Result := True; +end; + +procedure DeinitializeSetup(); +begin + // Hide Window before unloading skin so user does not get + // a glimpse of an unskinned window before it is closed. + ShowWindow(StrToInt(ExpandConstant('{wizardhwnd}')), 0); + UnloadSkin(); +end;