diff --git a/.gitignore b/.gitignore index 88b82deb8..79265b422 100644 --- a/.gitignore +++ b/.gitignore @@ -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.* diff --git a/Makefile.am b/Makefile.am index f6c92a58b..13edd1d90 100644 --- a/Makefile.am +++ b/Makefile.am @@ -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) - diff --git a/configure.ac b/configure.ac index 05e6f2e87..34f5eb04d 100644 --- a/configure.ac +++ b/configure.ac @@ -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 diff --git a/gtk-sharp-2.0-dev.wxs.in b/gtk-sharp-2.0-dev.wxs.in deleted file mode 100644 index 98bfea000..000000000 --- a/gtk-sharp-2.0-dev.wxs.in +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - "" OR Installed]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - "" OR Installed]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/gtk-sharp-2.0-lib.wxs.in b/gtk-sharp-2.0-lib.wxs.in deleted file mode 100755 index 15649ef12..000000000 --- a/gtk-sharp-2.0-lib.wxs.in +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/msi/Makefile.am b/msi/Makefile.am new file mode 100644 index 000000000..bceda3229 --- /dev/null +++ b/msi/Makefile.am @@ -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 diff --git a/msi/gtk-sharp-3.0.wxs.in b/msi/gtk-sharp-3.0.wxs.in new file mode 100644 index 000000000..d1dd991e7 --- /dev/null +++ b/msi/gtk-sharp-3.0.wxs.in @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + "1"]]> + + 1 + + 1 + Installed AND PATCH + + 1 + 1 + NOT WIXUI_DONTVALIDATEPATH + "1"]]> + WIXUI_DONTVALIDATEPATH OR WIXUI_INSTALLDIR_VALID="1" + 1 + 1 + + NOT Installed + Installed AND NOT PATCH + Installed AND PATCH + + 1 + + 1 + 1 + 1 + + + + + + + diff --git a/msi/unmanaged/Makefile.am b/msi/unmanaged/Makefile.am new file mode 100644 index 000000000..6afe677d9 --- /dev/null +++ b/msi/unmanaged/Makefile.am @@ -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 diff --git a/msi/unmanaged/bundle-scanner.cs b/msi/unmanaged/bundle-scanner.cs new file mode 100644 index 000000000..7cf5cc383 --- /dev/null +++ b/msi/unmanaged/bundle-scanner.cs @@ -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 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= --bundle="); + return 1; + } + } + + if (bundle_path == null || known_files == null) { + Console.WriteLine ("Usage: bundle-scanner --wix= --bundle="); + return 1; + } + + Dictionary ignores = new Dictionary (); + 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 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 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 GetSourcesFromDoc (XmlDocument doc) + { + Dictionary result = new Dictionary (); + foreach (XmlNode node in doc.DocumentElement.ChildNodes) + FindFileNodes (node as XmlElement, result); + return result; + } + + static void FindFileNodes (XmlElement elem, Dictionary 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 ignores = null; + Dictionary known_files = null; + DirectoryInfo bundle_dir = null; + List unexpected_files = new List (); + int relative_prefix_length; + + BundleScanner (string path, Dictionary known_files, Dictionary 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 ExpectedFiles { + get { + List result = new List (); + foreach (string s in known_files.Keys) + result.Add (s); + result.Sort (); + return result; + } + } + + public List 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); + } + } + +} diff --git a/msi/unmanaged/downloads.win32 b/msi/unmanaged/downloads.win32 new file mode 100644 index 000000000..e8e847862 --- /dev/null +++ b/msi/unmanaged/downloads.win32 @@ -0,0 +1 @@ +http://win32builder.gnome.org/gtk+-bundle_3.6.4-20130921_win32.zip diff --git a/msi/unmanaged/ignores b/msi/unmanaged/ignores new file mode 100644 index 000000000..0cf5f1db0 --- /dev/null +++ b/msi/unmanaged/ignores @@ -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 \ No newline at end of file diff --git a/msi/unmanaged/redirector.cs b/msi/unmanaged/redirector.cs new file mode 100644 index 000000000..7998ff356 --- /dev/null +++ b/msi/unmanaged/redirector.cs @@ -0,0 +1,56 @@ +// Redirector.cs - launches a program and sends its output to a file. +// +// Author: Mike Kestner +// +// 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 "); + 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; + } + } +} + diff --git a/msi/unmanaged/unmanaged.wxs b/msi/unmanaged/unmanaged.wxs new file mode 100644 index 000000000..ad36df126 --- /dev/null +++ b/msi/unmanaged/unmanaged.wxs @@ -0,0 +1,1423 @@ + + + + + + + + + + + + NOT Installed + NOT Installed + NOT Installed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +