Update the Windows installer infrastructure for GTK+ 3

Port the current installer infrastructure from the gtk-sharp-2-12
branch, adapting it as needed. Credits go to Duncan Mak for
maintaining the 2.12 installer in the past few years.

When building on Windows, if the WiX toolset is available, the msi is
generated automatically at the end of the build.
This commit is contained in:
Bertrand Lorentz 2014-05-04 12:41:44 +02:00
parent 233614e18b
commit c9c2d099ba
13 changed files with 2138 additions and 504 deletions

10
.gitignore vendored
View file

@ -7,19 +7,23 @@
*.exe.config
*.la
*.lo
*.msi
*.msm
*.mdb
*.o
*.pc
*.pidb
*.pdb
*.userprefs
*.wxs
*.wixobj
*.wixpdb
aclocal.m4
autom4te.cache
audit/data
config.*
configure
depcomp
doc/gtk-sharp-3-docs.*
generated
generated.c
generated-stamp
@ -28,10 +32,12 @@ libtool
ltmain.sh
m4/
missing
msi/gtk-sharp-3.0.wxs
msi/unmanaged/download-stamp
msi/unmanaged/source/*
policy.config
policy.*.config
stamp-h1
AssemblyInfo.cs
Makefile
Makefile.in
doc/gtk-sharp-3-docs.*

View file

@ -1,4 +1,4 @@
SUBDIRS = sources generator parser glib gio cairo pango atk gdk gtk gtkdotnet sample doc
SUBDIRS = sources generator parser glib gio cairo pango atk gdk gtk gtkdotnet sample doc msi
EXTRA_DIST = \
gapi.xsd \
@ -8,26 +8,3 @@ EXTRA_DIST = \
HACKING \
README \
README.generator
win32-installer: all
candle.exe gtk-sharp-2.0-lib.wxs
light.exe gtk-sharp-2.0-lib.wixobj
candle.exe gtk-sharp-2.0-dev.wxs
light.exe gtk-sharp-2.0-dev.wixobj
assembly_dirs = glib gio pango atk gdk gtk glade gtkdotnet
cross-bundle: all
mkdir -p gtk-sharp-cross-$(VERSION)
rm -rf gtk-sharp-cross-$(VERSION)/*
cp *.wxs gtk-sharp-cross-$(VERSION)
cp generator/gapi_codegen.exe gtk-sharp-cross-$(VERSION)
cp */glue/.libs/*.dll gtk-sharp-cross-$(VERSION)
@for a in $(assembly_dirs); do \
mkdir -p gtk-sharp-cross-$(VERSION)/$$a; \
cp $$a/*.dll gtk-sharp-cross-$(VERSION)/$$a; \
done
cp sample/GtkDemo/GtkDemo.exe gtk-sharp-cross-$(VERSION)
zip -9r gtk-sharp-cross-$(VERSION).zip gtk-sharp-cross-$(VERSION)
rm -rf gtk-sharp-cross-$(VERSION)

View file

@ -87,6 +87,14 @@ AC_ARG_ENABLE(debug, [ --enable-debug Build debugger (.mdb) files for
)
fi
enable_msi="no"
if test "x$platform_win32" = "xyes"; then
AC_PATH_PROG(WIX, candle, no)
if test "x$WIX" != "xno" ; then
enable_msi="yes"
fi
fi
AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
if test "x$PKG_CONFIG" = "xno"; then
AC_MSG_ERROR([You need to install pkg-config])
@ -216,6 +224,7 @@ AC_SUBST(MDOC)
AM_CONDITIONAL(ENABLE_DOTNET, test "x$enable_dotnet" = "xyes")
AM_CONDITIONAL(ENABLE_MONODOC, test "x$enable_monodoc" = "xyes")
AM_CONDITIONAL(ENABLE_MSI, test "x$enable_msi" = "xyes")
AC_SUBST(CFLAGS)
@ -258,6 +267,9 @@ gtkdotnet/Makefile
gtkdotnet/gtk-dotnet.dll.config
gtkdotnet/gtk-dotnet-3.0.pc
doc/Makefile
msi/gtk-sharp-3.0.wxs
msi/Makefile
msi/unmanaged/Makefile
sample/GtkDemo/Makefile
sample/Makefile
sample/pixmaps/Makefile

View file

@ -1,114 +0,0 @@
<?xml version="1.0" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Module Id="gtk__2_0_dev" Language="1033" Version="@VERSION@">
<Package Id="4667c06a-0a48-11dd-9af8-001a6bce76fb" InstallerVersion="200" Manufacturer="Mono Project"/>
<!-- Detect Visual Studio 2003/2008 -->
<Property Id="VS2003INSTALLED">
<RegistrySearch Id="VS2008RegistrySearch" Root="HKLM" Type="raw"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\Projects\{FAE04EC0-301F-11d3-BF4B-00C04F79EFBC}"
Name="ProjectTemplatesDir" />
</Property>
<Property Id="VS2008INSTALLED">
<RegistrySearch Id="VS2003RegistrySearch" Root="HKLM" Type="raw"
Key="SOFTWARE\Microsoft\VisualStudio\SxS\VS7\8.0" />
</Property>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="MergeRedirectFolder">
<!-- Install Assembly references into Visual Studio 2003 -->
<Component Id="vs2003_references" Guid="c0ac0c22-0a53-11dd-9af8-001a6bce76fb">
<!-- If the condition is true, install component -->
<!-- Install if Visual Studio 2003 is installed -->
<!-- (Un)install if already installed
(catches the case where Visual Studio was uninstalled first) -->
<Condition><![CDATA[VS2003INSTALLED <> "" OR Installed]]></Condition>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\atk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\atk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\gdk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gdk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\glade-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\glade" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\glib-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\glib" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\gtk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gtk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\gtk-dotnet">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gtk-dotnet" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\VisualStudio\7.1\AssemblyFolders\pango-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\pango" />
</RegistryKey>
</Component>
<!-- Install Assembly references into Visual Studio 2008 -->
<Component Id="vs2008_references" Guid="287a7bec-0a5c-11dd-9af8-001a6bce76fb">
<!-- If the condition is true, install component -->
<!-- Install if Visual Studio 2008 is installed -->
<!-- (Un)install if already installed
(catches the case where Visual Studio was uninstalled first) -->
<Condition><![CDATA[VS2008INSTALLED <> "" OR Installed]]></Condition>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\atk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\atk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\gdk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gdk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\glade-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\glade" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\glib-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\glib" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\gtk-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gtk" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\gtk-dotnet">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\gtk-dotnet" />
</RegistryKey>
<RegistryKey Root="HKLM" Action="createAndRemoveOnUninstall"
Key="SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx\pango-sharp">
<RegistryValue Type="string" Value="[MergeRedirectFolder]lib\gtk-sharp-2.0\pango" />
</RegistryKey>
</Component>
</Directory>
</Directory>
</Module>
</Wix>

View file

@ -1,364 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Module Id="gtk_sharp_2_0_lib" Language="1033" Version="@VERSION@">
<Package Id="73de9db7-8bfc-4419-8eae-c9aedbfc7e3a" Manufacturer="Mono Project"
InstallerVersion="200"/>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="MergeRedirectFolder">
<Directory Id="bin" Name="bin">
<Component Id="glibsharp_glue" Guid="9AFADFAB-0BD8-449e-B121-C9DB71EBECDC">
<File Id="glibsharpglue" Name="glibsharpglue-2.dll"
Source="./glib/glue/.libs/glibsharpglue-2.dll" KeyPath="yes" Vital="yes" />
</Component>
<Component Id="pangosharp_glue" Guid="3E7D8339-EF0E-4d95-8DDE-B124040C5646">
<File Id="pangosharpglue" Name="pangosharpglue-2.dll"
Source="./pango/glue/.libs/pangosharpglue-2.dll" KeyPath="yes" Vital="yes" />
</Component>
<Component Id="gdksharp_glue" Guid="59A54FCB-2326-4652-93A2-BB2D9D1108A5">
<File Id="gdksharpglue" Name="gdksharpglue-2.dll"
Source="./gdk/glue/.libs/gdksharpglue-2.dll" KeyPath="yes" Vital="yes" />
</Component>
<Component Id="gtksharp_glue" Guid="15F6534F-29A6-4e00-8214-587B444BE81F">
<File Id="gtksharpglue" Name="gtksharpglue-2.dll"
Source="./gtk/glue/.libs/gtksharpglue-2.dll" KeyPath="yes" Vital="yes" />
</Component>
<Component Id="gladesharp_glue" Guid="8D6464FB-CCD1-4f65-9756-554A61E46135">
<File Id="gladesharpglue" Name="gladesharpglue-2.dll"
Source="./glade/glue/.libs/gladesharpglue-2.dll" KeyPath="yes" Vital="yes" />
</Component>
</Directory>
<Directory Id="lib" Name="lib">
<!-- The following is not a real directory - it is created only for
the purposes of GACing assemblies, and will never be created on
a host system -->
<Directory Id="GAC">
<Directory Id="gac_glib" Name="glib">
<Component Id="glibsharp_dll" Guid="2A180BD5-0B0B-4739-8F32-99723B9995E8">
<File Id="glibsharpdll" Name="glib-sharp.dll" Assembly=".net" KeyPath="yes"
Source="./glib/glib-sharp.dll" Vital="yes" />
</Component>
<Component Id="glibsharp_policy.2.4" Guid="B0C57B39-84BF-490f-80FE-DA5109AD4205">
<File Id="policy.2.4.glibsharp.dll" Name="policy.2.4.glib-sharp.dll" Assembly=".net"
KeyPath="yes" Source="./glib/policy.2.4.glib-sharp.dll"
Vital="no" />
<File Id="policy.2.4.glibsharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.glibsharp.dll"
Source="./glib/policy.2.4.config" Vital="no" />
</Component>
<Component Id="glibsharp_policy.2.6" Guid="FA9DF142-780E-41db-8792-CE85858720FE">
<File Id="policy.2.6.glibsharp.dll" Name="policy.2.6.glib-sharp.dll" Assembly=".net"
KeyPath="yes" Source="./glib/policy.2.6.glib-sharp.dll"
Vital="no" />
<File Id="policy.2.6.glibsharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.glibsharp.dll"
Source="glib\policy.2.6.config" Vital="no" />
</Component>
<Component Id="glibsharp_policy.2.8" Guid="E8246FAB-C67A-4118-8C40-F224C22F50BD">
<File Id="policy.2.8.glibsharp.dll" Name="policy.2.8.glib-sharp.dll" Assembly=".net"
KeyPath="yes" Source="glib\policy.2.8.glib-sharp.dll"
Vital="no" />
<File Id="policy.2.8.glibsharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.glibsharp.dll"
Source="glib\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_atk" Name="atk">
<Component Id="atksharp_dll" Guid="B0A2DD32-CAC0-4f5f-BF62-78C1EE663E39">
<File Id="atksharpdll" Name="atk-sharp.dll" Assembly=".net" KeyPath="yes"
Source="atk\atk-sharp.dll" Vital="yes" />
</Component>
<Component Id="atksharp_policy.2.4" Guid="DC246FCC-C1B4-4ffe-8349-3A2D9E90FFB7">
<File Id="policy.2.4.atksharp.dll" Name="policy.2.4.atk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="atk\policy.2.4.atk-sharp.dll"
Vital="no" />
<File Id="policy.2.4.atksharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.atksharp.dll"
Source="atk\policy.2.4.config" Vital="no" />
</Component>
<Component Id="atksharp_policy.2.6" Guid="9AE7D671-4391-4f80-879F-93A2261DF727">
<File Id="policy.2.6.atksharp.dll" Name="policy.2.6.atk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="atk\policy.2.6.atk-sharp.dll"
Vital="no" />
<File Id="policy.2.6.atksharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.atksharp.dll"
Source="atk\policy.2.6.config" Vital="no" />
</Component>
<Component Id="atksharp_policy.2.8" Guid="07B535E4-99BD-45ab-98E8-82FA2DEBF43F">
<File Id="policy.2.8.atksharp.dll" Name="policy.2.8.atk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="atk\policy.2.8.atk-sharp.dll"
Vital="no" />
<File Id="policy.2.8.atksharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.atksharp.dll"
Source="atk\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_pango" Name="pango">
<Component Id="pangosharp_dll" Guid="7A25FC7A-5D5E-4bd8-B2B5-A26DB824D73F">
<File Id="pangosharpdll" Name="pango-sharp.dll" Assembly=".net" KeyPath="yes"
Source="pango\pango-sharp.dll" Vital="yes" />
</Component>
<Component Id="pangosharp_policy.2.4" Guid="F0054D3C-6439-4cb6-A09D-11DD575A38C8">
<File Id="policy.2.4.pangosharp.dll" Name="policy.2.4.pango-sharp.dll" Assembly=".net"
KeyPath="yes" Source="pango\policy.2.4.pango-sharp.dll"
Vital="no" />
<File Id="policy.2.4.pangosharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.pangosharp.dll"
Source="pango\policy.2.4.config" Vital="no" />
</Component>
<Component Id="pangosharp_policy.2.6" Guid="1B6DF14F-2B27-4444-AC36-25FDAC41E77A">
<File Id="policy.2.6.pangosharp.dll" Name="policy.2.6.pango-sharp.dll" Assembly=".net"
KeyPath="yes" Source="pango\policy.2.6.pango-sharp.dll"
Vital="no" />
<File Id="policy.2.6.pangosharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.pangosharp.dll"
Source="pango\policy.2.6.config" Vital="no" />
</Component>
<Component Id="pangosharp_policy.2.8" Guid="FAF18997-5304-45e9-98D3-3F6F79C9269D">
<File Id="policy.2.8.pangosharp.dll" Name="policy.2.8.pango-sharp.dll" Assembly=".net"
KeyPath="yes" Source="pango\policy.2.8.pango-sharp.dll"
Vital="no" />
<File Id="policy.2.8.pangosharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.pangosharp.dll"
Source="pango\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_gdk" Name="gdk">
<Component Id="gdksharp_dll" Guid="01F56C08-C89D-476d-82BC-62E3E1DADD6A">
<File Id="gdksharpdll" Name="gdk-sharp.dll" Assembly=".net" KeyPath="yes"
Source="gdk\gdk-sharp.dll" Vital="yes" />
</Component>
<Component Id="gdksharp_policy.2.4" Guid="08E3D470-A558-4e4f-B806-B9F8834F58D4">
<File Id="policy.2.4.gdksharp.dll" Name="policy.2.4.gdk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gdk\policy.2.4.gdk-sharp.dll"
Vital="no" />
<File Id="policy.2.4.gdksharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.gdksharp.dll"
Source="gdk\policy.2.4.config" Vital="no" />
</Component>
<Component Id="gdksharp_policy.2.6" Guid="69C4103C-99A8-4f1a-9C50-0FA761EB47B4">
<File Id="policy.2.6.gdksharp.dll" Name="policy.2.6.gdk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gdk\policy.2.6.gdk-sharp.dll"
Vital="no" />
<File Id="policy.2.6.gdksharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.gdksharp.dll"
Source="gdk\policy.2.6.config" Vital="no" />
</Component>
<Component Id="gdksharp_policy.2.8" Guid="48120F7B-87E2-47b4-B07D-563FEB117242">
<File Id="policy.2.8.gdksharp.dll" Name="policy.2.8.gdk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gdk\policy.2.8.gdk-sharp.dll"
Vital="no" />
<File Id="policy.2.8.gdksharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.gdksharp.dll"
Source="gdk\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_gtk" Name="gtk">
<Component Id="gtksharp_dll" Guid="d8db26ca-a6ec-4d4c-bde1-c8c3a65c1473">
<File Id="gtksharpdll" Name="gtk-sharp.dll" Assembly=".net" KeyPath="yes"
Source="gtk\gtk-sharp.dll" Vital="yes" />
</Component>
<Component Id="gtksharp_policy.2.4" Guid="7DE61998-2AD1-4776-B2F5-7E76EACC0237">
<File Id="policy.2.4.gtksharp.dll" Name="policy.2.4.gtk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gtk\policy.2.4.gtk-sharp.dll"
Vital="no" />
<File Id="policy.2.4.gtksharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.gtksharp.dll"
Source="gtk\policy.2.4.config" Vital="no" />
</Component>
<Component Id="gtksharp_policy.2.6" Guid="7E2D0B9C-DFA9-438e-B229-6617BD6DE96D">
<File Id="policy.2.6.gtksharp.dll" Name="policy.2.6.gtk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gtk\policy.2.6.gtk-sharp.dll"
Vital="no" />
<File Id="policy.2.6.gtksharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.gtksharp.dll"
Source="gtk\policy.2.6.config" Vital="no" />
</Component>
<Component Id="gtksharp_policy.2.8" Guid="F618D91C-C7FF-49fa-8A71-B4D6825EC229">
<File Id="policy.2.8.gtksharp.dll" Name="policy.2.8.gtk-sharp.dll" Assembly=".net"
KeyPath="yes" Source="gtk\policy.2.8.gtk-sharp.dll"
Vital="no" />
<File Id="policy.2.8.gtksharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.gtksharp.dll"
Source="gtk\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_gtkdotnet" Name="gtk-dotnet">
<Component Id="gtkdotnet_dll" Guid="4FDE6CCB-25FE-4b8e-9383-462F73952EF9">
<File Id="gtkdotnetdll" Name="gtk-dotnet.dll" Assembly=".net" KeyPath="yes"
Source="gtkdotnet\gtk-dotnet.dll" Vital="yes" />
</Component>
<Component Id="gtkdotnet_policy.2.4" Guid="F4B03BD8-F20C-419a-86DC-9F84AD1B0739">
<File Id="policy.2.4.gtkdotnet.dll" Name="policy.2.4.gtk-dotnet.dll" Assembly=".net"
KeyPath="yes" Source="gtkdotnet\policy.2.4.gtk-dotnet.dll"
Vital="no" />
<File Id="policy.2.4.gtkdotnet.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.gtkdotnet.dll"
Source="gtkdotnet\policy.2.4.config" Vital="no" />
</Component>
<Component Id="gtkdotnet_policy.2.6" Guid="88560AEF-4696-4e99-A2B1-D2A797AD666A">
<File Id="policy.2.6.gtkdotnet.dll" Name="policy.2.6.gtk-dotnet.dll" Assembly=".net"
KeyPath="yes" Source="gtkdotnet\policy.2.6.gtk-dotnet.dll"
Vital="no" />
<File Id="policy.2.6.gtkdotnet.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.gtkdotnet.dll"
Source="gtkdotnet\policy.2.6.config" Vital="no" />
</Component>
<Component Id="gtkdotnet_policy.2.8" Guid="6BE1C993-72CB-49bd-AAFF-3E48FB5ED06E">
<File Id="policy.2.8.gtkdotnet.dll" Name="policy.2.8.gtk-dotnet.dll" Assembly=".net"
KeyPath="yes" Source="gtkdotnet\policy.2.8.gtk-dotnet.dll"
Vital="no" />
<File Id="policy.2.8.gtkdotnet.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.gtkdotnet.dll"
Source="gtkdotnet\policy.2.8.config" Vital="no" />
</Component>
</Directory>
<Directory Id="gac_glade" Name="glade">
<Component Id="gladesharp_dll" Guid="E8E7066F-5113-4279-83CB-5FBA7D870E22">
<File Id="gladesharpdll" Name="glade-sharp.dll" Assembly=".net" KeyPath="yes"
Source="glade\glade-sharp.dll" Vital="yes" />
</Component>
<Component Id="gladesharp_policy.2.4" Guid="34FAC0DC-D2FE-4567-B89C-C1D2C1011808">
<File Id="policy.2.4.gladesharp.dll" Name="policy.2.4.glade-sharp.dll" Assembly=".net"
KeyPath="yes" Source="glade\policy.2.4.glade-sharp.dll"
Vital="no" />
<File Id="policy.2.4.gladesharp.config" Name="policy.2.4.config"
CompanionFile="policy.2.4.gladesharp.dll"
Source="glade\policy.2.4.config" Vital="no" />
</Component>
<Component Id="gladesharp_policy.2.6" Guid="CEDD652F-2AB9-4a29-8986-94D877EC0B44">
<File Id="policy.2.6.gladesharp.dll" Name="policy.2.6.glade-sharp.dll" Assembly=".net"
KeyPath="yes" Source="glade\policy.2.6.glade-sharp.dll"
Vital="no" />
<File Id="policy.2.6.gladesharp.config" Name="policy.2.6.config"
CompanionFile="policy.2.6.gladesharp.dll"
Source="glade\policy.2.6.config" Vital="no" />
</Component>
<Component Id="gladesharp_policy.2.8" Guid="0EAAB533-7156-4ec8-BBD8-5B8B5E855EE4">
<File Id="policy.2.8.gladesharp.dll" Name="policy.2.8.glade-sharp.dll" Assembly=".net"
KeyPath="yes" Source="glade\policy.2.8.glade-sharp.dll"
Vital="no" />
<File Id="policy.2.8.gladesharp.config" Name="policy.2.8.config"
CompanionFile="policy.2.8.gladesharp.dll"
Source="glade\policy.2.8.config" Vital="no" />
</Component>
</Directory>
</Directory>
<!-- Specifying Assembly=".net" causes the dll to be GACed but the
file is never installed, so we must specify it again. See
http://blogs.msdn.com/astebner/archive/2007/06/21/3450539.aspx -->
<Directory Id="gtksharp2.0" Name="gtk-sharp-2.0">
<Directory Id="glib" Name="glib">
<Component Id="glibsharp_dll_inst" Guid="73177ea6-0a76-11dd-9af8-001a6bce76fb">
<File Id="glibsharpdll_inst" Name="glib-sharp.dll" KeyPath="yes"
Source="glib\glib-sharp.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="atk" Name="atk">
<Component Id="atksharp_dll_inst" Guid="7857dd70-0a76-11dd-9af8-001a6bce76fb">
<File Id="atksharpdll_inst" Name="atk-sharp.dll" KeyPath="yes"
Source="atk\atk-sharp.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="pango" Name="pango">
<Component Id="pangosharp_dll_inst" Guid="7f3e49c6-0a76-11dd-9af8-001a6bce76fb">
<File Id="pangosharpdll_inst" Name="pango-sharp.dll" KeyPath="yes"
Source="pango\pango-sharp.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="gdk" Name="gdk">
<Component Id="gdksharp_dll_inst" Guid="86421a04-0a76-11dd-9af8-001a6bce76fb">
<File Id="gdksharpdll_inst" Name="gdk-sharp.dll" KeyPath="yes"
Source="gdk\gdk-sharp.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="gtk" Name="gtk">
<Component Id="gtksharp_dll_inst" Guid="8add53ee-0a76-11dd-9af8-001a6bce76fb">
<File Id="gtksharpdll_inst" Name="gtk-sharp.dll" KeyPath="yes"
Source="gtk\gtk-sharp.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="gtkdotnet" Name="gtk-dotnet">
<Component Id="gtkdotnet_dll_inst" Guid="902fb4cc-0a76-11dd-9af8-001a6bce76fb">
<File Id="gtkdotnetdll_inst" Name="gtk-dotnet.dll" KeyPath="yes"
Source="gtkdotnet\gtk-dotnet.dll" Vital="yes" />
</Component>
</Directory>
<Directory Id="glade" Name="glade">
<Component Id="gladesharp_dll_inst" Guid="95ba3d0e-0a76-11dd-9af8-001a6bce76fb">
<File Id="gladesharpdll_inst" Name="glade-sharp.dll" KeyPath="yes"
Source="glade\glade-sharp.dll" Vital="yes" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Module>
</Wix>

30
msi/Makefile.am Normal file
View file

@ -0,0 +1,30 @@
SUBDIRS = unmanaged .
assembly_dirs = glib gio pango atk gdk gtk gtkdotnet cairo
if ENABLE_MSI
TARGET=gtk-sharp-3.0.msi
else
TARGET=
endif
noinst_DATA = $(TARGET)
gtk-sharp-3.0.msi: gtk-sharp-3.0.wxs
mkdir -p binaries
rm -rf binaries/*
cp $(top_builddir)/generator/gapi_codegen.exe binaries
cp $(top_builddir)/*/glue/.libs/*.dll binaries
for a in $(assembly_dirs); do \
mkdir -p binaries/$$a; \
cp $(top_builddir)/$$a/*.dll binaries/$$a; \
cp $(top_builddir)/$$a/*.pdb binaries/$$a; \
done
mv binaries/libatksharpglue-3.dll binaries/atksharpglue-3.dll
mv binaries/libgiosharpglue-3.dll binaries/giosharpglue-3.dll
mv binaries/libgtksharpglue-3.dll binaries/gtksharpglue-3.dll
mv binaries/libpangosharpglue-3.dll binaries/pangosharpglue-3.dll
cp $(top_builddir)/sample/GtkDemo/GtkDemo.exe binaries
candle -ext WixUIExtension gtk-sharp-3.0.wxs
light -cultures:en-us -ext WixUIExtension -ext WixNetFxExtension -out gtk-sharp-$(VERSION).msi gtk-sharp-3.0.wixobj

192
msi/gtk-sharp-3.0.wxs.in Normal file
View file

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Should not be changed -->
<?define ProductName = "Gtk# for .Net @VERSION@" ?>
<?define Manufacturer = "Gtk# Project" ?>
<?define UpgradeCode = "568E6AAA-B1AD-469D-91D3-EA9721AC3D26" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="$(var.ProductName)" Language="1033" Version="@VERSION@" Manufacturer="$(var.Manufacturer)" UpgradeCode="$(var.UpgradeCode)">
<Package InstallerVersion="200" Compressed="yes" Description="$(var.ProductName)" Comments="Provides Gtk# and dependencies." />
<Media Id="1" Cabinet="WixProject1.cab" EmbedCab="yes" />
<PropertyRef Id="NETFRAMEWORK40FULL" />
<Condition Message="This setup requires the .NET Framework 4.0.">
<![CDATA[Installed or NETFRAMEWORK40FULL]]>
</Condition>
<Property Id="PREVIOUSVERSIONSINSTALLED" Secure="yes" />
<Upgrade Id="$(var.UpgradeCode)">
<UpgradeVersion OnlyDetect="no" Maximum="@VERSION@" Property="PREVIOUSVERSIONSINSTALLED" IncludeMaximum="no" />
</Upgrade>
<InstallExecuteSequence>
<RemoveExistingProducts Before="InstallInitialize" />
</InstallExecuteSequence>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder" Name="PFiles">
<Directory Id="GtkSharp" Name="GtkSharp">
<Directory Id="INSTALLLOCATION" Name="3.0">
<Merge Id="unmanaged" Language="1033" SourceFile="unmanaged\unmanaged.msm" DiskId="1" />
<Directory Id="bin" Name="bin">
<Component Id="atksharp_glue" Guid="2473B8B1-349C-4DB0-8EBC-9978FD2BCE6E">
<File Id="atksharpglue_3.dll" KeyPath="yes" Source="binaries\atksharpglue-3.dll" />
</Component>
<Component Id="giosharp_glue" Guid="ED5481E9-1F3B-4DE4-A83A-7F7DF7199498">
<File Id="giosharpglue_3.dll" KeyPath="yes" Source="binaries\giosharpglue-3.dll" />
</Component>
<Component Id="gtksharp_glue" Guid="81F0C925-CA07-41A4-85A8-0FD26262CF76">
<File Id="gtksharpglue_3.dll" KeyPath="yes" Source="binaries\gtksharpglue-3.dll" />
</Component>
<Component Id="pangosharp_glue" Guid="C8A5F8DB-446E-4FC2-90B5-1F3FCA5BEF19">
<File Id="pangosharpglue_3.dll" KeyPath="yes" Source="binaries\pangosharpglue-3.dll" />
</Component>
</Directory>
<Directory Id="lib" Name="lib">
<Directory Id="GAC">
<!-- not an explicit directory, Assembly=".net" GACs the assemblies -->
<Directory Id="gac_atk" Name="atk">
<Component Id="atksharp_dll" Guid="AC749D80-C1E5-4AE2-A388-CF75BFCE5D05">
<File Id="atk_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\atk\atk-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_cairo" Name="cairo">
<Component Id="cairosharp_dll" Guid="1AF27166-DD33-4C60-BCD8-1CB2A1863359">
<File Id="cairo_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\cairo\cairo-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_gdk" Name="gdk">
<Component Id="gdksharp_dll" Guid="5DF924D7-C3A0-4027-994A-AF0F48A7E832">
<File Id="gdk_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\gdk\gdk-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_gio" Name="gio">
<Component Id="giosharp_dll" Guid="D2FDF4FD-B4A4-42EB-B6E3-41251F6443EA">
<File Id="gio_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\gio\gio-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_glib" Name="glib">
<Component Id="glibsharp_dll" Guid="A3C57C52-9ACC-4E33-8D50-2B4486979359">
<File Id="glib_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\glib\glib-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_gtk" Name="gtk">
<Component Id="gtksharp_dll" Guid="50DD0511-2DBD-45C3-BC0D-D5594401A9B8">
<File Id="gtk_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\gtk\gtk-sharp.dll" />
</Component>
</Directory>
<Directory Id="gac_gtkdotnet" Name="gtkdotnet">
<Component Id="gtkdotnet_dll" Guid="85E3BDC0-05E3-4854-97EF-9BF2706F3137">
<File Id="gtk_dotnet.dll" Assembly=".net" KeyPath="yes" Source="binaries\gtkdotnet\gtk-dotnet.dll" />
</Component>
</Directory>
<Directory Id="gac_pango" Name="pango">
<Component Id="pangosharp_dll" Guid="F54A5972-0619-4BC5-8AC4-73FB2CA3598B">
<File Id="pango_sharp.dll" Assembly=".net" KeyPath="yes" Source="binaries\pango\pango-sharp.dll" />
</Component>
</Directory>
</Directory>
<Directory Id="gtksharp20" Name="gtk-sharp-3.0">
<!-- Installs GACd assemblies to an addressable location - see http://blogs.msdn.com/astebner/archive/2007/06/21/3450539.aspx -->
<Component Id="gtksharpinstassembly" Guid="BC078476-3336-4871-B9E1-3598BD724407">
<RegistryKey Root='HKLM' Key='SOFTWARE\GtkSharp\Version'>
<RegistryValue Type="string" Value="[ProductVersion]" />
</RegistryKey>
<RegistryKey Root='HKLM' Key='SOFTWARE\Microsoft\.NetFramework\v4.0.30319\AssemblyFoldersEx\GtkSharp'>
<RegistryValue Type="string" Value="[INSTALLLOCATION]lib\gtk-sharp-3.0" />
</RegistryKey>
<RegistryKey Root='HKLM' Key='SOFTWARE\GtkSharp\InstallFolder'>
<RegistryValue Type="string" Value="[INSTALLLOCATION]" />
</RegistryKey>
<File Id="atksharpdll_inst" Source="binaries/atk/atk-sharp.dll" />
<File Id="atksharppdb" Source="binaries/atk/atk-sharp.pdb" Vital="no" />
<File Id="cairosharpdll_inst" Source="binaries/cairo/cairo-sharp.dll" />
<File Id="cairosharppdb" Source="binaries/cairo/cairo-sharp.pdb" Vital="no" />
<File Id="gdksharpdll_inst" Source="binaries/gdk/gdk-sharp.dll" />
<File Id="gdksharppdb" Source="binaries/gdk/gdk-sharp.pdb" Vital="no" />
<File Id="giosharpdll_inst" Source="binaries/gio/gio-sharp.dll" />
<File Id="giosharppdb" Source="binaries/gio/gio-sharp.pdb" Vital="no" />
<File Id="glibsharpdll_inst" Source="binaries/glib/glib-sharp.dll" />
<File Id="glibsharppdb" Source="binaries/glib/glib-sharp.pdb" Vital="no" />
<File Id="gtksharpdll_inst" Source="binaries/gtk/gtk-sharp.dll" />
<File Id="gtksharppdb" Source="binaries/gtk/gtk-sharp.pdb" Vital="no" />
<File Id="gtkdotnetdll_inst" Source="binaries/gtkdotnet/gtk-dotnet.dll" />
<File Id="gtkdotnetpdb" Source="binaries/gtkdotnet/gtk-dotnet.pdb" Vital="no" />
<File Id="pangosharpdll_inst" Source="binaries/pango/pango-sharp.dll" />
<File Id="pangosharppdb" Source="binaries/pango/pango-sharp.pdb" Vital="no" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
<Feature Id="Default" Title="Default" Level="1">
<MergeRef Id="unmanaged" />
<ComponentRef Id="giosharp_glue" />
<ComponentRef Id="pangosharp_glue" />
<ComponentRef Id="atksharp_glue" />
<ComponentRef Id="gtksharp_glue" />
<ComponentRef Id="cairosharp_dll" />
<ComponentRef Id="glibsharp_dll" />
<ComponentRef Id="giosharp_dll" />
<ComponentRef Id="pangosharp_dll" />
<ComponentRef Id="atksharp_dll" />
<ComponentRef Id="gdksharp_dll" />
<ComponentRef Id="gtksharp_dll" />
<ComponentRef Id="gtkdotnet_dll" />
<ComponentRef Id="gtksharpinstassembly" />
</Feature>
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION" />
<UI Id="WixUI_InstallDir">
<TextStyle Id="WixUI_Font_Normal" FaceName="Tahoma" Size="8" />
<TextStyle Id="WixUI_Font_Bigger" FaceName="Tahoma" Size="12" />
<TextStyle Id="WixUI_Font_Title" FaceName="Tahoma" Size="9" Bold="yes" />
<Property Id="DefaultUIFont" Value="WixUI_Font_Normal" />
<Property Id="WixUI_Mode" Value="InstallDir" />
<DialogRef Id="BrowseDlg" />
<DialogRef Id="DiskCostDlg" />
<DialogRef Id="ErrorDlg" />
<DialogRef Id="FatalError" />
<DialogRef Id="FilesInUse" />
<DialogRef Id="MsiRMFilesInUse" />
<DialogRef Id="PrepareDlg" />
<DialogRef Id="ProgressDlg" />
<DialogRef Id="ResumeDlg" />
<DialogRef Id="UserExit" />
<Publish Dialog="BrowseDlg" Control="OK" Event="DoAction" Value="WixUIValidatePath" Order="3">1</Publish>
<Publish Dialog="BrowseDlg" Control="OK" Event="SpawnDialog" Value="InvalidDirDlg" Order="4"><![CDATA[WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="ExitDialog" Control="Finish" Event="EndDialog" Value="Return" Order="999">1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="InstallDirDlg">1</Publish>
<Publish Dialog="WelcomeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">Installed AND PATCH</Publish>
<Publish Dialog="InstallDirDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="SetTargetPath" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="WixUIValidatePath" Order="2">NOT WIXUI_DONTVALIDATEPATH</Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="SpawnDialog" Value="InvalidDirDlg" Order="3"><![CDATA[NOT WIXUI_DONTVALIDATEPATH AND WIXUI_INSTALLDIR_VALID<>"1"]]></Publish>
<Publish Dialog="InstallDirDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg" Order="4">WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1"</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Property="_BrowseProperty" Value="[WIXUI_INSTALLDIR]" Order="1">1</Publish>
<Publish Dialog="InstallDirDlg" Control="ChangeFolder" Event="SpawnDialog" Value="BrowseDlg" Order="2">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="InstallDirDlg" Order="1">NOT Installed</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="2">Installed AND NOT PATCH</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="2">Installed AND PATCH</Publish>
<Publish Dialog="MaintenanceWelcomeDlg" Control="Next" Event="NewDialog" Value="MaintenanceTypeDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="RepairButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="RemoveButton" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="MaintenanceTypeDlg" Control="Back" Event="NewDialog" Value="MaintenanceWelcomeDlg">1</Publish>
<Property Id="ARPNOMODIFY" Value="1" />
</UI>
<UIRef Id="WixUI_Common" />
</Product>
</Wix>

33
msi/unmanaged/Makefile.am Normal file
View file

@ -0,0 +1,33 @@
if ENABLE_MSI
TARGET=unmanaged.msm
else
TARGET=
endif
noinst_DATA = $(TARGET)
DOWNLOADS = downloads.win32
download-stamp: $(DOWNLOADS)
rm -rf source
mkdir -p source
cd source && for i in `cat ../$(DOWNLOADS)`; do wget --no-check-certificate $$i; done && for j in `ls *.zip`; do unzip $$j; rm $$j; done
touch download-stamp
unmanaged.wixobj: unmanaged.wxs redirector.exe download-stamp
candle unmanaged.wxs
unmanaged.msm: unmanaged.wixobj
light unmanaged.wixobj
bundle-scanner.exe: bundle-scanner.cs
$(CSC) bundle-scanner.cs
redirector.exe: redirector.cs
$(CSC) redirector.cs
scan: download-stamp bundle-scanner.exe
$(RUNTIME) bundle-scanner.exe --wix=unmanaged.wxs --bundle=source
CLEANFILES = source
EXTRA_DIST = redirector.cs unmanaged.wxs downloads.win32 ignores

View file

@ -0,0 +1,176 @@
// Copyright (c) 2010 Novell, Inc.
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of version 2 of the GNU General Public
// License as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc., 59 Temple Place - Suite 330,
// Boston, MA 02111-1307, USA.
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
public class BundleScanner {
public static int Main (string[] args)
{
Dictionary<string, bool> known_files = null;
string bundle_path = null;
foreach (string arg in args) {
if (arg.StartsWith("--wix=")) {
string wix_filename = arg.Substring (6);
try {
XmlDocument wix_doc = new XmlDocument ();
wix_doc.Load (wix_filename);
known_files = GetSourcesFromDoc (wix_doc);
} catch (XmlException e) {
Console.WriteLine ("Invalid wix file.");
Console.WriteLine (e);
return 1;
}
} else if (arg.StartsWith ("--bundle=")) {
bundle_path = arg.Substring (9);
if (!Directory.Exists (bundle_path)) {
Console.WriteLine ("Invalid bundle directory.");
return 1;
}
} else {
Console.WriteLine ("Usage: bundle-scanner --wix=<filename> --bundle=<dir>");
return 1;
}
}
if (bundle_path == null || known_files == null) {
Console.WriteLine ("Usage: bundle-scanner --wix=<filename> --bundle=<dir>");
return 1;
}
Dictionary<string, bool> ignores = new Dictionary<string, bool> ();
if (File.Exists ("ignores")) {
using (StreamReader rdr = new StreamReader ("ignores")) {
while (rdr.Peek () >= 0)
ignores [rdr.ReadLine ()] = true;
}
}
BundleScanner scanner = new BundleScanner (bundle_path, known_files, ignores);
scanner.Scan ();
List<string> missing = scanner.ExpectedFiles;
if (missing.Count > 0) {
Console.WriteLine ();
Console.WriteLine ("Expected files missing in bundle:");
Console.WriteLine ("---------------------------");
foreach (string file in missing)
Console.WriteLine (" " + file);
}
List<string> unexpected = scanner.UnexpectedFiles;
if (unexpected.Count > 0) {
Console.WriteLine ();
Console.WriteLine ("Unexpected files in bundle:");
Console.WriteLine ("---------------------------");
foreach (string file in unexpected)
Console.WriteLine (" " + file);
}
return 0;
}
static Dictionary<string, bool> GetSourcesFromDoc (XmlDocument doc)
{
Dictionary<string, bool> result = new Dictionary<string, bool> ();
foreach (XmlNode node in doc.DocumentElement.ChildNodes)
FindFileNodes (node as XmlElement, result);
return result;
}
static void FindFileNodes (XmlElement elem, Dictionary<string, bool> sources)
{
if (elem == null)
return;
if (elem.Name == "File") {
string source = elem.GetAttribute ("Source");
if (!source.StartsWith ("custom\\"))
sources [source] = true;
} else {
foreach (XmlNode node in elem.ChildNodes)
FindFileNodes (node as XmlElement, sources);
}
}
Dictionary<string, bool> ignores = null;
Dictionary<string, bool> known_files = null;
DirectoryInfo bundle_dir = null;
List<string> unexpected_files = new List<string> ();
int relative_prefix_length;
BundleScanner (string path, Dictionary<string, bool> known_files, Dictionary<string, bool> ignores)
{
bundle_dir = new DirectoryInfo (path);
this.known_files = known_files;
this.ignores = ignores;
relative_prefix_length = bundle_dir.FullName.Length - bundle_dir.Name.Length;
}
public List<string> ExpectedFiles {
get {
List<string> result = new List<string> ();
foreach (string s in known_files.Keys)
result.Add (s);
result.Sort ();
return result;
}
}
public List<string> UnexpectedFiles {
get {
unexpected_files.Sort ();
return unexpected_files;
}
}
public void Scan ()
{
Scan (bundle_dir);
}
string GetRelativeFileName (string filename)
{
return filename.Substring (relative_prefix_length);
}
void Scan (DirectoryInfo dir)
{
foreach (FileInfo file in dir.GetFiles ()) {
string relative = GetRelativeFileName (file.FullName);
relative = relative.Replace ('/', '\\');
if (ignores.ContainsKey (relative))
continue;
if (known_files.ContainsKey (relative))
known_files.Remove (relative);
else
unexpected_files.Add (relative);
}
foreach (DirectoryInfo sub in dir.GetDirectories ()) {
string relative = GetRelativeFileName (sub.FullName);
relative = relative.Replace ('/', '\\');
if (ignores.ContainsKey (relative))
continue;
Scan (sub);
}
}
}

View file

@ -0,0 +1 @@
http://win32builder.gnome.org/gtk+-bundle_3.6.4-20130921_win32.zip

206
msi/unmanaged/ignores Normal file
View file

@ -0,0 +1,206 @@
source\bin\autopoint
source\bin\croco-0.6-config
source\bin\envsubst.exe
source\bin\fc-cache.exe
source\bin\fc-cat.exe
source\bin\fc-list.exe
source\bin\fc-match.exe
source\bin\fc-pattern.exe
source\bin\fc-query.exe
source\bin\fc-scan.exe
source\bin\freetype-config
source\bin\gdbus-codegen
source\bin\gdbus.exe
source\bin\gdk-pixbuf-csource.exe
source\bin\gdk-pixbuf-pixdata.exe
source\bin\gettext.exe
source\bin\gettext.sh
source\bin\gettextize
source\bin\gio-querymodules.exe
source\bin\glib-compile-resources.exe
source\bin\glib-compile-schemas.exe
source\bin\glib-genmarshal.exe
source\bin\glib-gettextize
source\bin\glib-mkenums
source\bin\gobject-query.exe
source\bin\gresource.exe
source\bin\gsettings.exe
source\bin\gtk-update-icon-cache.exe
source\bin\gtk-update-icon-cache.exe.manifest
source\bin\gtk3-demo-application.exe
source\bin\gtk3-demo.exe
source\bin\gtk3-widget-factory.exe
source\bin\libcairo-script-interpreter-2.dll
source\bin\libpng-config
source\bin\libpng15-config
source\bin\ngettext.exe
source\bin\pango-view.exe
source\bin\pkg-config.exe
source\bin\xml2-config
source\gtk+-bundle_3.6.4-20130921_win32.README.txt
source\include
source\lib\atk-1.0.def
source\lib\atk-1.0.lib
source\lib\cairo.def
source\lib\cairo.lib
source\lib\fontconfig.def
source\lib\fontconfig.lib
source\lib\gailutil.def
source\lib\gailutil.lib
source\lib\gdbus-2.0
source\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache
source\lib\gdk-pixbuf-2.0\2.10.0\loaders\libpixbufloader-svg.dll.a
source\lib\gdk-win32-3.0.def
source\lib\gdk-win32-3.0.lib
source\lib\gdk_pixbuf-2.0.def
source\lib\gdk_pixbuf-2.0.lib
source\lib\gio-2.0.def
source\lib\gio-2.0.lib
source\lib\glib-2.0.def
source\lib\glib-2.0.lib
source\lib\glib-2.0\include\glibconfig.h
source\lib\gmodule-2.0.def
source\lib\gmodule-2.0.lib
source\lib\gobject-2.0.def
source\lib\gobject-2.0.lib
source\lib\gthread-2.0.def
source\lib\gthread-2.0.lib
source\lib\gtk-3.0\3.0.0\immodules.cache
source\lib\gtk-win32-3.0.def
source\lib\gtk-win32-3.0.lib
source\lib\libatk-1.0.dll.a
source\lib\libcairo-gobject.dll.a
source\lib\libcairo-script-interpreter.dll.a
source\lib\libcairo.dll.a
source\lib\libcroco-0.6.dll.a
source\lib\libffi-3.0.12
source\lib\libffi.dll.a
source\lib\libfontconfig.dll.a
source\lib\libfreetype.dll.a
source\lib\libgailutil-3.dll.a
source\lib\libgdk-3.dll.a
source\lib\libgdk_pixbuf-2.0.dll.a
source\lib\libgio-2.0.dll.a
source\lib\libglib-2.0.dll.a
source\lib\libgmodule-2.0.dll.a
source\lib\libgobject-2.0.dll.a
source\lib\libgthread-2.0.dll.a
source\lib\libgtk-3.dll.a
source\lib\libiconv.dll.a
source\lib\libintl.dll.a
source\lib\libjasper.dll.a
source\lib\libjpeg.dll.a
source\lib\liblzma.dll.a
source\lib\libpango-1.0.dll.a
source\lib\libpangocairo-1.0.dll.a
source\lib\libpangoft2-1.0.dll.a
source\lib\libpangowin32-1.0.dll.a
source\lib\libpixman-1.dll.a
source\lib\libpng.dll.a
source\lib\libpng15.dll.a
source\lib\librsvg-2.dll.a
source\lib\libtiff.dll.a
source\lib\libxml2.dll.a
source\lib\libz.dll.a
source\lib\pango-1.0.def
source\lib\pango-1.0.lib
source\lib\pangocairo-1.0.def
source\lib\pangocairo-1.0.lib
source\lib\pangoft2-1.0.def
source\lib\pangoft2-1.0.lib
source\lib\pangowin32-1.0.def
source\lib\pangowin32-1.0.lib
source\lib\pkgconfig
source\lib\xml2Conf.sh
source\manifest
source\share\aclocal
source\share\bash-completion
source\share\doc
source\share\fontconfig
source\share\gdb
source\share\glib-2.0\gdb
source\share\glib-2.0\gettext
source\share\gtk-3.0
source\share\gtk-doc
source\share\icons\gnome-light
source\share\locale\be\LC_MESSAGES\gettext-runtime.mo
source\share\locale\be\LC_MESSAGES\gettext-tools.mo
source\share\locale\bg\LC_MESSAGES\gettext-runtime.mo
source\share\locale\bg\LC_MESSAGES\gettext-tools.mo
source\share\locale\ca\LC_MESSAGES\gettext-runtime.mo
source\share\locale\ca\LC_MESSAGES\gettext-tools.mo
source\share\locale\cs\LC_MESSAGES\gettext-runtime.mo
source\share\locale\cs\LC_MESSAGES\gettext-tools.mo
source\share\locale\da\LC_MESSAGES\gettext-runtime.mo
source\share\locale\da\LC_MESSAGES\gettext-tools.mo
source\share\locale\de\LC_MESSAGES\gettext-runtime.mo
source\share\locale\de\LC_MESSAGES\gettext-tools.mo
source\share\locale\el\LC_MESSAGES\gettext-runtime.mo
source\share\locale\el\LC_MESSAGES\gettext-tools.mo
source\share\locale\en@boldquot\LC_MESSAGES\gettext-runtime.mo
source\share\locale\en@boldquot\LC_MESSAGES\gettext-tools.mo
source\share\locale\en@quot\LC_MESSAGES\gettext-runtime.mo
source\share\locale\en@quot\LC_MESSAGES\gettext-tools.mo
source\share\locale\eo\LC_MESSAGES\gettext-runtime.mo
source\share\locale\es\LC_MESSAGES\gettext-runtime.mo
source\share\locale\es\LC_MESSAGES\gettext-tools.mo
source\share\locale\et\LC_MESSAGES\gettext-runtime.mo
source\share\locale\et\LC_MESSAGES\gettext-tools.mo
source\share\locale\eu\LC_MESSAGES\gettext-tools.mo
source\share\locale\fi\LC_MESSAGES\gettext-runtime.mo
source\share\locale\fi\LC_MESSAGES\gettext-tools.mo
source\share\locale\fr\LC_MESSAGES\gettext-runtime.mo
source\share\locale\fr\LC_MESSAGES\gettext-tools.mo
source\share\locale\ga\LC_MESSAGES\gettext-runtime.mo
source\share\locale\gl\LC_MESSAGES\gettext-runtime.mo
source\share\locale\gl\LC_MESSAGES\gettext-tools.mo
source\share\locale\hr\LC_MESSAGES\gettext-runtime.mo
source\share\locale\id\LC_MESSAGES\gettext-runtime.mo
source\share\locale\id\LC_MESSAGES\gettext-tools.mo
source\share\locale\it\LC_MESSAGES\gettext-runtime.mo
source\share\locale\it\LC_MESSAGES\gettext-tools.mo
source\share\locale\ja\LC_MESSAGES\gettext-runtime.mo
source\share\locale\ja\LC_MESSAGES\gettext-tools.mo
source\share\locale\ko\LC_MESSAGES\gettext-runtime.mo
source\share\locale\ko\LC_MESSAGES\gettext-tools.mo
source\share\locale\locale.alias
source\share\locale\nb\LC_MESSAGES\gettext-runtime.mo
source\share\locale\nb\LC_MESSAGES\gettext-tools.mo
source\share\locale\nl\LC_MESSAGES\gettext-runtime.mo
source\share\locale\nl\LC_MESSAGES\gettext-tools.mo
source\share\locale\nn\LC_MESSAGES\gettext-runtime.mo
source\share\locale\nn\LC_MESSAGES\gettext-tools.mo
source\share\locale\pa\LC_MESSAGES\gettext-tools.mo
source\share\locale\pl\LC_MESSAGES\gettext-runtime.mo
source\share\locale\pl\LC_MESSAGES\gettext-tools.mo
source\share\locale\pt\LC_MESSAGES\gettext-runtime.mo
source\share\locale\pt\LC_MESSAGES\gettext-tools.mo
source\share\locale\pt_BR\LC_MESSAGES\gettext-runtime.mo
source\share\locale\pt_BR\LC_MESSAGES\gettext-tools.mo
source\share\locale\ro\LC_MESSAGES\gettext-runtime.mo
source\share\locale\ro\LC_MESSAGES\gettext-tools.mo
source\share\locale\ru\LC_MESSAGES\gettext-runtime.mo
source\share\locale\ru\LC_MESSAGES\gettext-tools.mo
source\share\locale\sk\LC_MESSAGES\gettext-runtime.mo
source\share\locale\sk\LC_MESSAGES\gettext-tools.mo
source\share\locale\sl\LC_MESSAGES\gettext-runtime.mo
source\share\locale\sl\LC_MESSAGES\gettext-tools.mo
source\share\locale\sr\LC_MESSAGES\gettext-runtime.mo
source\share\locale\sr\LC_MESSAGES\gettext-tools.mo
source\share\locale\sv\LC_MESSAGES\gettext-runtime.mo
source\share\locale\sv\LC_MESSAGES\gettext-tools.mo
source\share\locale\tr\LC_MESSAGES\gettext-runtime.mo
source\share\locale\tr\LC_MESSAGES\gettext-tools.mo
source\share\locale\uk\LC_MESSAGES\gettext-runtime.mo
source\share\locale\uk\LC_MESSAGES\gettext-tools.mo
source\share\locale\vi\LC_MESSAGES\gettext-runtime.mo
source\share\locale\vi\LC_MESSAGES\gettext-tools.mo
source\share\locale\zh_CN\LC_MESSAGES\gettext-runtime.mo
source\share\locale\zh_CN\LC_MESSAGES\gettext-tools.mo
source\share\locale\zh_HK\LC_MESSAGES\gettext-runtime.mo
source\share\locale\zh_TW\LC_MESSAGES\gettext-runtime.mo
source\share\locale\zh_TW\LC_MESSAGES\gettext-tools.mo
source\share\man
source\share\themes\Emacs\gtk-3.0\gtk-keys.css
source\share\xml\fontconfig\fonts.dtd
source\src

View file

@ -0,0 +1,56 @@
// Redirector.cs - launches a program and sends its output to a file.
//
// Author: Mike Kestner <mkestner@speakeasy.net>
//
// Copyright (c) 2009 Novell, Inc.
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
namespace GtkSharpInstaller {
using System;
using System.IO;
using System.Diagnostics;
public class Redirector {
public static int Main (string[] args)
{
if (args.Length != 2) {
Console.Error.WriteLine ("Usage: redirector.exe <program> <file>");
return 1;
}
var outfile = new FileInfo (args [1]);
outfile.Directory.Create ();
ProcessStartInfo info = new ProcessStartInfo (args [0]);
info.RedirectStandardOutput = true;
info.UseShellExecute = false;
Process proc = Process.Start (info);
StreamWriter sw = new StreamWriter (outfile.Create ());
sw.WriteLine (proc.StandardOutput.ReadToEnd ());
sw.Close ();
return 0;
}
}
}

1423
msi/unmanaged/unmanaged.wxs Normal file

File diff suppressed because it is too large Load diff