win32/copy/copy.vcxproj

Switched hardcoded DLL names to wildcard patterns (ex: atk-1.0-0.dll → *atk-1.0-0.dll, iconv.dll → *iconv*.dll, etc.) so it correctly picks up lib* prefixed builds.
  Made Enchant provider copying resilient by copying lib\enchant\*.dll instead of a single hardcoded libenchant_myspell.dll.
  Added optional copy support for LuaJIT DLLs (luajit*.dll) alongside lua51.dll.

win32/installer/zoitechat.iss.tt
  Updated DLL Source: entries to match real-world names from dependency bundles using wildcards (*glib-2*.dll, *gtk-3*.dll, etc.).
  Added optional LuaJIT inclusion (skip if missing) and wildcarded girepository.

win32/zoitechat.props
  Added env overrides so CI (and humans) can actually control paths:
  ZOITECHAT_DEPS_PATH
  ZOITECHAT_PYTHON3_PATH
  already supported ISCC_EXE and now it actually matters.
  Fixed glib-genmarshal handling to prefer glib-genmarshal.exe if present (and only use Python script path if needed).
  Added library-name auto-detection for MSVC import libs (gtk-3.lib vs gtk-3.0.lib vs libgtk-3.lib, etc.) so linking doesn’t die just because the bundle names differ.
  Ensured InstallerEnabled gets re-evaluated after IsccPath is resolved (GTK3 had the order wrong, so installer builds could be silently disabled).

.github/workflows/windows-build.yml
  Made artifact collection and plugin validation tolerate win32 vs Win32 output directory naming, instead of assuming humans are consistent (they aren’t).
This commit is contained in:
2026-02-14 15:57:41 -07:00
parent 20b0aab470
commit 874ea99492
4 changed files with 318 additions and 274 deletions

View File

@@ -212,7 +212,10 @@ jobs:
msbuild win32\zoitechat.sln /m /verbosity:minimal /p:Configuration=Release /p:Platform=${{ matrix.platform }}
set "PLUGIN_DIR=..\zoitechat-build\${{ matrix.platform }}\rel\plugins"
set "BUILD_DIR=..\zoitechat-build\${{ matrix.platform }}"
if not exist "%BUILD_DIR%" if /I "${{ matrix.platform }}"=="win32" set "BUILD_DIR=..\zoitechat-build\Win32"
if not exist "%BUILD_DIR%" if /I "${{ matrix.platform }}"=="win32" set "BUILD_DIR=..\zoitechat-build\WIN32"
set "PLUGIN_DIR=%BUILD_DIR%\rel\plugins"
for %%F in (hcchecksum.dll hcexec.dll hcfishlim.dll hcsysinfo.dll hcupd.dll hcwinamp.dll hcperl.dll hcpython3.dll hclua.dll) do (
if not exist "%PLUGIN_DIR%\%%F" (
if /I "%%F"=="hclua.dll" (
@@ -230,7 +233,15 @@ jobs:
- name: Preparing Artifacts
run: |
move ..\zoitechat-build\${{ matrix.platform }}\ZoiteChat*.exe .\
set "BUILD_DIR=..\zoitechat-build\${{ matrix.platform }}"
if not exist "%BUILD_DIR%" if /I "${{ matrix.platform }}"=="win32" set "BUILD_DIR=..\zoitechat-build\Win32"
if not exist "%BUILD_DIR%" if /I "${{ matrix.platform }}"=="win32" set "BUILD_DIR=..\zoitechat-build\WIN32"
if not exist "%BUILD_DIR%" (
echo Missing build output dir: %BUILD_DIR%
dir ..\zoitechat-build
exit /b 1
)
move "%BUILD_DIR%\ZoiteChat*.exe" .\
move ..\zoitechat-build .\
shell: cmd

View File

@@ -24,47 +24,49 @@
<Import Project="..\zoitechat.props" />
<ItemGroup>
<None Include="$(DepsRoot)\bin\cert.pem" />
<None Include="$(DepsRoot)\bin\atk-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\cairo*.dll" />
<None Include="$(DepsRoot)\bin\freetype-*.dll" />
<None Include="$(DepsRoot)\bin\fribidi-0.dll" />
<None Include="$(DepsRoot)\bin\fontconfig-*.dll" />
<None Include="$(DepsRoot)\bin\gdk_pixbuf-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\gdk-3-*.dll" />
<None Include="$(DepsRoot)\bin\gio-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\glib-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\gmodule-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\gobject-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\*atk-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\*cairo*.dll" />
<None Include="$(DepsRoot)\bin\*freetype*.dll" />
<None Include="$(DepsRoot)\bin\*fribidi*.dll" />
<None Include="$(DepsRoot)\bin\*fontconfig*.dll" />
<None Include="$(DepsRoot)\bin\*gdk_pixbuf*.dll" />
<None Include="$(DepsRoot)\bin\*gdk-3*.dll" />
<None Include="$(DepsRoot)\bin\*gio-2*.dll" />
<None Include="$(DepsRoot)\bin\*glib-2*.dll" />
<None Include="$(DepsRoot)\bin\*gmodule-2*.dll" />
<None Include="$(DepsRoot)\bin\*gobject-2*.dll" />
<None Include="$(DepsRoot)\bin\gspawn-win$(PlatformArchitecture)-helper.exe" />
<None Include="$(DepsRoot)\bin\gspawn-win$(PlatformArchitecture)-helper-console.exe" />
<None Include="$(DepsRoot)\bin\gthread-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\gtk-3-*.dll" />
<None Include="$(DepsRoot)\bin\iconv.dll" />
<None Include="$(DepsRoot)\bin\libcrypto*.dll" />
<None Include="$(DepsRoot)\bin\libssl*.dll" />
<None Include="$(DepsRoot)\bin\libenchant.dll" />
<None Include="$(DepsRoot)\bin\ffi-*.dll" />
<None Include="$(DepsRoot)\bin\intl.dll" />
<None Include="$(DepsRoot)\bin\jpeg*.dll" />
<None Include="$(DepsRoot)\bin\libpng16.dll" />
<None Include="$(DepsRoot)\bin\libjpeg*.dll" />
<None Include="$(DepsRoot)\bin\libxml2-*.dll" />
<None Include="$(DepsRoot)\bin\pango-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\pangocairo-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\pangoft2-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\pangowin32-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\zlib1.dll" />
<None Include="$(DepsRoot)\bin\*gthread-2*.dll" />
<None Include="$(DepsRoot)\bin\*gtk-3*.dll" />
<None Include="$(DepsRoot)\bin\*iconv*.dll" />
<None Include="$(DepsRoot)\bin\*crypto*.dll" />
<None Include="$(DepsRoot)\bin\*ssl*.dll" />
<None Include="$(DepsRoot)\bin\*enchant*.dll" />
<None Include="$(DepsRoot)\bin\*ffi*.dll" />
<None Include="$(DepsRoot)\bin\*intl*.dll" />
<None Include="$(DepsRoot)\bin\*jpeg*.dll" />
<None Include="$(DepsRoot)\bin\*png*.dll" />
<None Include="$(DepsRoot)\bin\*jpeg*.dll" />
<None Include="$(DepsRoot)\bin\*xml2*.dll" />
<None Include="$(DepsRoot)\bin\*pango-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\*pangocairo-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\*pangoft2-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\*pangowin32-1.0-0.dll" />
<None Include="$(DepsRoot)\bin\*zlib*.dll" />
<None Include="$(WinSparklePath)\WinSparkle.dll" />
<None Include="changelog.url" />
<None Include="readme.url" />
<None Include="$(DepsRoot)\bin\lua51.dll" />
<None Include="$(DepsRoot)\bin\girepository-2.0-0.dll" />
<None Include="$(DepsRoot)\bin\luajit*.dll" />
<None Include="$(DepsRoot)\bin\*girepository*.dll" />
<LuaLib Include="$(DepsRoot)\lib\lua\**\*.dll" />
<LuaShare Include="$(DepsRoot)\share\lua\*.lua" />
<LuaShare Include="$(DepsRoot)\share\lua\**\*.lua" />
<LuaShare Include="$(DepsRoot)\share\lua\**\**\*.lua" />
<Typelib Include="$(DepsRoot)\lib\girepository-1.0\*.typelib" />
<EnchantProviders Include="$(DepsRoot)\lib\enchant\*.dll" />
<None Include="$(Python3Path)\Lib\site-packages\_cffi_backend.*.pyd" />
<Gtk3Immodules Include="$(DepsRoot)\lib\gtk-3.0\3.0.0\immodules\**\*" />
@@ -89,7 +91,7 @@
<Copy SourceFiles="@(Share)" DestinationFiles="@(Share->'$(ZoiteChatRel)\share\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="..\..\COPYING" DestinationFolder="$(ZoiteChatRel)\share\doc\zoitechat" />
<Copy SourceFiles="$(WinSparklePath)\COPYING" DestinationFolder="$(ZoiteChatRel)\share\doc\WinSparkle" />
<Copy SourceFiles="$(DepsRoot)\lib\enchant\libenchant_myspell.dll" DestinationFolder="$(ZoiteChatRel)\lib\enchant" />
<Copy SourceFiles="@(EnchantProviders)" DestinationFolder="$(ZoiteChatRel)\lib\enchant" />
<Copy SourceFiles="@(Locale)" DestinationFiles="@(Locale->'$(ZoiteChatRel)\share\locale\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(MSWindowsTheme)" DestinationFiles="@(MSWindowsTheme->'$(ZoiteChatRel)\share\themes\MS-Windows\%(RecursiveDir)%(Filename)%(Extension)')" />
<Copy SourceFiles="@(LuaShare)" DestinationFiles="@(LuaShare->'$(ZoiteChatRel)\share\lua\%(RecursiveDir)%(Filename)%(Extension)')" />

View File

@@ -114,17 +114,17 @@ Source: "share\themes\MS-Windows\*"; DestDir: "{app}\share\themes\MS-Windows"; F
Source: "share\locale\*"; DestDir: "{app}\share\locale"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: translations
Source: "etc\fonts\*"; DestDir: "{app}\etc\fonts"; Flags: ignoreversion createallsubdirs recursesubdirs; Components: libs
Source: "atk-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "cairo*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "freetype-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "fribidi-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "fontconfig-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gdk_pixbuf-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gdk-3-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gio-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "glib-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gmodule-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gobject-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*atk-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*cairo*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*freetype*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*fribidi*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*fontconfig*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gdk_pixbuf*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gdk-3*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gio-2*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*glib-2*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gmodule-2*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gobject-2*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
#if APPARCH == "x64"
Source: "gspawn-win64-helper.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gspawn-win64-helper-console.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
@@ -132,24 +132,24 @@ Source: "gspawn-win64-helper-console.exe"; DestDir: "{app}"; Flags: ignoreversio
Source: "gspawn-win32-helper.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gspawn-win32-helper-console.exe"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
#endif
Source: "gthread-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "gtk-3-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "iconv.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gthread-2*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*gtk-3*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*iconv*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "libcrypto-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "libssl-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "libenchant.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "ffi-*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "intl.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*ffi*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*intl*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "jpeg*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
Source: "libpng16.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*png*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "libjpeg*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
Source: "libxml2-*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
Source: "*xml2*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
Source: "xml2-*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: libs
Source: "pango-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "pangocairo-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "pangoft2-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "pangowin32-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "zlib1.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*pango-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*pangocairo-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*pangoft2-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*pangowin32-1.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "*zlib*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: libs
Source: "plugins\hcnotifications-winrt.dll"; DestDir: "{app}\plugins"; Flags: ignoreversion; Components: libs
@@ -160,8 +160,9 @@ Source: "lib\enchant\*"; DestDir: "{app}\lib\enchant"; Flags: ignoreversion; Com
Source: "lib\gtk-3.0\3.0.0\immodules\*"; DestDir: "{app}\lib\gtk-3.0\3.0.0\immodules"; Flags: ignoreversion createallsubdirs recursesubdirs skipifsourcedoesntexist; Components: libs
Source: "lib\gtk-3.0\3.0.0\printbackends\*"; DestDir: "{app}\lib\gtk-3.0\3.0.0\printbackends"; Flags: ignoreversion createallsubdirs recursesubdirs skipifsourcedoesntexist; Components: libs
Source: "girepository-2.0-0.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: langs\lua
Source: "lua51.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: langs\lua
Source: "*girepository*.dll"; DestDir: "{app}"; Flags: ignoreversion; Components: langs\lua
Source: "lua51.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: langs\lua
Source: "luajit*.dll"; DestDir: "{app}"; Flags: ignoreversion skipifsourcedoesntexist; Components: langs\lua
Source: "lib\lua\2.1\lgi\*.dll"; DestDir: "{app}\lib\lua\2.1\lgi"; Flags: ignoreversion; Components: langs\lua
Source: "lib\girepository-1.0\*.typelib"; DestDir: "{app}\lib\girepository-1.0"; Flags: ignoreversion; Components: langs\lua
Source: "share\lua\2.1\*.lua"; DestDir: "{app}\share\lua\2.1"; Flags: ignoreversion; Components: langs\lua

View File

@@ -4,9 +4,11 @@
<!-- SPECIFY YOUR DEPENDENCY DIRECTORIES HERE -->
<YourDepsPath Condition="'$(YourDepsPath)'=='' and '$(ZOITECHAT_DEPS_PATH)'!=''">$(ZOITECHAT_DEPS_PATH)</YourDepsPath>
<YourDepsPath Condition="'$(YourDepsPath)'==''">c:\gtk-build\gtk</YourDepsPath>
<YourGendefPath Condition="'$(YourGendefPath)'==''">c:\gtk-build\gendef</YourGendefPath>
<YourPerlPath Condition="'$(YourPerlPath)'==''">c:\gtk-build\perl-5.20</YourPerlPath>
<YourPython3Path Condition="'$(YourPython3Path)'=='' and '$(ZOITECHAT_PYTHON3_PATH)'!=''">$(ZOITECHAT_PYTHON3_PATH)</YourPython3Path>
<YourPython3Path Condition="'$(YourPython3Path)'==''">c:\gtk-build\python-3.14</YourPython3Path>
<YourWinSparklePath Condition="'$(YourWinSparklePath)'==''">c:\gtk-build\WinSparkle</YourWinSparklePath>
@@ -40,8 +42,8 @@
<LuaLib Condition="'$(LuaLib)'=='' and Exists('$(DepsRoot)\lib\luajit.lib')">luajit</LuaLib>
<LuaEnabled Condition="'$(LuaInclude)'!='' and '$(LuaLib)'!=''">true</LuaEnabled>
<LuaEnabled Condition="'$(LuaEnabled)'==''">false</LuaEnabled>
<GlibGenMarshal Condition="'$(GlibGenMarshal)'=='' and Exists('$(DepsRoot)\\bin\\glib-genmarshal')">&quot;$(Python3Path)\python.exe&quot; &quot;$(DepsRoot)\bin\glib-genmarshal&quot;</GlibGenMarshal>
<GlibGenMarshal Condition="'$(GlibGenMarshal)'==''">&quot;$(Python3Path)\python.exe&quot; &quot;$(DepsRoot)\bin\glib-genmarshal&quot;</GlibGenMarshal>
<GlibGenMarshal Condition="Exists('$(DepsRoot)\bin\glib-genmarshal.exe')">"$(DepsRoot)\bin\glib-genmarshal.exe"</GlibGenMarshal>
<GlibGenMarshal Condition="'$(GlibGenMarshal)'=='' and Exists('$(DepsRoot)\bin\glib-genmarshal') and Exists('$(Python3Path)\python.exe')">"$(Python3Path)\python.exe" "$(DepsRoot)\bin\glib-genmarshal"</GlibGenMarshal>
<Glib>$(DepsRoot)\include\glib-2.0;$(DepsRoot)\lib\glib-2.0\include;$(DepsRoot)\include\libxml2</Glib>
<UsingGtk3 Condition="Exists('$(DepsRoot)\\include\\gtk-3.0\\gtk\\gtk.h')">true</UsingGtk3>
<GtkDefines>HAVE_GTK3</GtkDefines>
@@ -55,7 +57,32 @@
<OpenSslLibs Condition="'$(SslModernLib)' != '' and '$(CryptoModernLib)' != ''">$(SslModernLib);$(CryptoModernLib)</OpenSslLibs>
<OpenSslLibs Condition="'$(OpenSslLibs)' == '' and '$(SslLegacyLib)' != '' and '$(CryptoLegacyLib)' != ''">$(SslLegacyLib);$(CryptoLegacyLib)</OpenSslLibs>
<OpenSslInclude Condition="Exists('$(DepsRoot)\\include\\openssl\\ssl.h')">$(DepsRoot)\include</OpenSslInclude>
<DepLibs>gtk-3.lib;gdk-3.lib;wininet.lib;winmm.lib;ws2_32.lib;atk-1.0.lib;gio-2.0.lib;gdk_pixbuf-2.0.lib;pangowin32-1.0.lib;pangocairo-1.0.lib;pango-1.0.lib;cairo.lib;gobject-2.0.lib;gmodule-2.0.lib;glib-2.0.lib;intl.lib;iconv.lib;zlib1.lib;xml2.lib;jpeg.lib;libpng16.lib;$(OpenSslLibs)</DepLibs>
<!-- Resolve library names across dependency bundles -->
<Gtk3Lib Condition="Exists('$(DepsRoot)\lib\gtk-3.lib')">gtk-3.lib</Gtk3Lib>
<Gtk3Lib Condition="'$(Gtk3Lib)'=='' and Exists('$(DepsRoot)\lib\gtk-3.0.lib')">gtk-3.0.lib</Gtk3Lib>
<Gtk3Lib Condition="'$(Gtk3Lib)'=='' and Exists('$(DepsRoot)\lib\libgtk-3.lib')">libgtk-3.lib</Gtk3Lib>
<Gtk3Lib Condition="'$(Gtk3Lib)'=='' and Exists('$(DepsRoot)\lib\libgtk-3.0.lib')">libgtk-3.0.lib</Gtk3Lib>
<Gdk3Lib Condition="Exists('$(DepsRoot)\lib\gdk-3.lib')">gdk-3.lib</Gdk3Lib>
<Gdk3Lib Condition="'$(Gdk3Lib)'=='' and Exists('$(DepsRoot)\lib\gdk-3.0.lib')">gdk-3.0.lib</Gdk3Lib>
<Gdk3Lib Condition="'$(Gdk3Lib)'=='' and Exists('$(DepsRoot)\lib\libgdk-3.lib')">libgdk-3.lib</Gdk3Lib>
<Gdk3Lib Condition="'$(Gdk3Lib)'=='' and Exists('$(DepsRoot)\lib\libgdk-3.0.lib')">libgdk-3.0.lib</Gdk3Lib>
<IntlLib Condition="Exists('$(DepsRoot)\lib\intl.lib')">intl.lib</IntlLib>
<IntlLib Condition="'$(IntlLib)'=='' and Exists('$(DepsRoot)\lib\libintl.lib')">libintl.lib</IntlLib>
<IconvLib Condition="Exists('$(DepsRoot)\lib\iconv.lib')">iconv.lib</IconvLib>
<IconvLib Condition="'$(IconvLib)'=='' and Exists('$(DepsRoot)\lib\libiconv.lib')">libiconv.lib</IconvLib>
<ZlibLib Condition="Exists('$(DepsRoot)\lib\zlib1.lib')">zlib1.lib</ZlibLib>
<ZlibLib Condition="'$(ZlibLib)'=='' and Exists('$(DepsRoot)\lib\zlib.lib')">zlib.lib</ZlibLib>
<Xml2Lib Condition="Exists('$(DepsRoot)\lib\libxml2.lib')">libxml2.lib</Xml2Lib>
<Xml2Lib Condition="'$(Xml2Lib)'=='' and Exists('$(DepsRoot)\lib\xml2.lib')">xml2.lib</Xml2Lib>
<Xml2Lib Condition="'$(Xml2Lib)'=='' and Exists('$(DepsRoot)\lib\libxml2-2.lib')">libxml2-2.lib</Xml2Lib>
<JpegLib Condition="Exists('$(DepsRoot)\lib\jpeg.lib')">jpeg.lib</JpegLib>
<JpegLib Condition="'$(JpegLib)'=='' and Exists('$(DepsRoot)\lib\libjpeg.lib')">libjpeg.lib</JpegLib>
<JpegLib Condition="'$(JpegLib)'=='' and Exists('$(DepsRoot)\lib\libjpeg-8.lib')">libjpeg-8.lib</JpegLib>
<JpegLib Condition="'$(JpegLib)'=='' and Exists('$(DepsRoot)\lib\libjpeg-9.lib')">libjpeg-9.lib</JpegLib>
<PngLib Condition="Exists('$(DepsRoot)\lib\libpng16.lib')">libpng16.lib</PngLib>
<PngLib Condition="'$(PngLib)'=='' and Exists('$(DepsRoot)\lib\libpng16_static.lib')">libpng16_static.lib</PngLib>
<PngLib Condition="'$(PngLib)'=='' and Exists('$(DepsRoot)\lib\libpng.lib')">libpng.lib</PngLib>
<DepLibs>$(Gtk3Lib);$(Gdk3Lib);wininet.lib;winmm.lib;ws2_32.lib;atk-1.0.lib;gio-2.0.lib;gdk_pixbuf-2.0.lib;pangowin32-1.0.lib;pangocairo-1.0.lib;pango-1.0.lib;cairo.lib;gobject-2.0.lib;gmodule-2.0.lib;glib-2.0.lib;$(IntlLib);$(IconvLib);$(ZlibLib);$(Xml2Lib);$(JpegLib);$(PngLib);$(OpenSslLibs)</DepLibs>
<DataDir>$(SolutionDir)..\data\\</DataDir>
<ZoiteChatBuild>$(SolutionDir)..\..\zoitechat-build</ZoiteChatBuild>
<ZoiteChatBin>$(ZoiteChatBuild)\$(PlatformName)\bin\</ZoiteChatBin>
@@ -68,6 +95,7 @@
<IsccPath Condition="'$(IsccPath)'=='' and '$(ProgramFiles(x86))'!='' and Exists('$(ProgramFiles(x86))\Inno Setup 6\iscc.exe')">$(ProgramFiles(x86))\Inno Setup 6\iscc.exe</IsccPath>
<IsccPath Condition="'$(IsccPath)'=='' and '$(ProgramFiles)'!='' and Exists('$(ProgramFiles)\Inno Setup 5\iscc.exe')">$(ProgramFiles)\Inno Setup 5\iscc.exe</IsccPath>
<IsccPath Condition="'$(IsccPath)'=='' and '$(ProgramFiles)'!='' and Exists('$(ProgramFiles)\Inno Setup 6\iscc.exe')">$(ProgramFiles)\Inno Setup 6\iscc.exe</IsccPath>
<InstallerEnabled Condition="Exists('$(IsccPath)')">true</InstallerEnabled>
</PropertyGroup>
<PropertyGroup>
@@ -115,6 +143,8 @@
<Error Condition="!Exists('$(DepsRoot)\include\glib-2.0\glib.h')" Text="Missing GTK/GLib headers under $(DepsRoot). Set YourDepsPath in win32\zoitechat.props or set ZOITECHAT_DEPS_PATH before launching Visual Studio." />
<Error Condition="!Exists('$(DepsRoot)\lib\glib-2.0\include\glibconfig.h')" Text="Missing glibconfig.h under $(DepsRoot). Ensure prebuilt dependencies are unpacked for $(PlatformName)." />
<Error Condition="!Exists('$(DepsRoot)\include\gtk-3.0\gtk\gtk.h')" Text="Missing GTK headers under $(DepsRoot). Install GTK runtime/devel files and verify YourDepsPath/ZOITECHAT_DEPS_PATH." />
<Error Condition="'$(Gtk3Lib)'==''" Text="Missing GTK import library (gtk-3*.lib) under $(DepsRoot)\lib. Ensure your dependency bundle includes MSVC .lib files (not just .dll)." />
<Error Condition="'$(Gdk3Lib)'==''" Text="Missing GDK import library (gdk-3*.lib) under $(DepsRoot)\lib. Ensure your dependency bundle includes MSVC .lib files." />
<Error Condition="!Exists('$(DepsRoot)\include\openssl\ssl.h') and !Exists('$(DepsRoot)\include\openssl3\openssl\ssl.h') and !Exists('$(DepsRoot)\include\openssl-3\openssl\ssl.h')" Text="Missing OpenSSL headers under $(DepsRoot). Install OpenSSL development files for your target architecture." />
<Error Condition="!Exists('$(Python3Path)\python.exe')" Text="Missing Python at $(Python3Path). Set YourPython3Path in win32\zoitechat.props or set ZOITECHAT_PYTHON3_PATH." />
</Target>