diff --git a/NEWS.txt b/NEWS.txt
index c041eab6..72cb4465 100644
--- a/NEWS.txt
+++ b/NEWS.txt
@@ -21,6 +21,7 @@ Miscellaneous:
- Generated X.509 certificates are now version 3 ones.
- Bundled Bouncy Castle jars upgraded to version 1.58; 1.56 is the new
minimum required version.
+- Portecle is now also distributed as unsigned macOS application bundle
New in Portecle 1.10 (2016-02-04):
----------------------------------
diff --git a/README.md b/README.md
index 326353a4..52ed83ab 100644
--- a/README.md
+++ b/README.md
@@ -105,6 +105,14 @@ If you wish to manage the jar locations yourself, use Java's `-cp`
option for that, and `net.sf.portecle.FPortecle` as the class to
launch.
+### macOS Application Bundle
+
+As of v1.11 a macOS application bundle is available and provides an
+alternative way to run Portecle on your Mac. Unzip `portecle.app.zip` and
+CTRL-Right-Click on the extracted Portecle.app bundle. macOS will warn you
+about the fact that the bundle is not signed but allows you to run it
+anyway (this procedure is only required the first time you run Protecle).
+
### Experimental Features
Portecle releases may contain experimental features that are not
diff --git a/build.xml b/build.xml
index 018e009e..ea1e35dc 100644
--- a/build.xml
+++ b/build.xml
@@ -269,6 +269,30 @@
fullpath="portecle-${version}/bcpkix.jar" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -287,7 +311,7 @@
-
+
+
+
+ CFBundleDevelopmentRegion
+ English
+
+ CFBundleExecutable
+ JavaAppLauncher
+
+ CFBundleIconFile
+ icns/portecle.icns
+
+ CFBundleIdentifier
+ net.sf.portecle
+
+ CFBundleDisplayName
+ Portecle
+
+ CFBundleInfoDictionaryVersion
+ 6.0
+
+ CFBundleName
+ Portecle
+
+ CFBundlePackageType
+ APPL
+
+ NSPrincipalClass
+ NSApplication
+
+ NSHighResolutionCapable
+ True
+
+ CFBundleSignature
+ ????
+
+ CFBundleVersion
+ 1.11
+
+ NSHumanReadableCopyright
+ Copyright © 2004 Wayne Grant, 2004 Mark Majczyk,
+ 2004-2017 Ville Skyttä
+
+ Portecle is licensed under GNU GPLv2 and comes with ABSOLUTELY NO WARRANTY.
+
+
+
+ JVMVersion
+ 1.7+
+
+ JVMMainClassName
+ net.sf.portecle.FPortecle
+
+ JVMOptions
+
+ -Dapple.laf.useScreenMenuBar=true
+ -Duser.dir=$APP_ROOT/Contents
+ -Xdock:name=Portecle
+
+
+ JVMArguments
+
+
+
+
diff --git a/src/etc/JavaAppLauncher b/src/etc/JavaAppLauncher
new file mode 100755
index 00000000..7bddebea
Binary files /dev/null and b/src/etc/JavaAppLauncher differ
diff --git a/src/etc/Localizable.strings b/src/etc/Localizable.strings
new file mode 100644
index 00000000..0d306aaa
--- /dev/null
+++ b/src/etc/Localizable.strings
@@ -0,0 +1,3 @@
+"JRELoadError" = "Unable to load Java Runtime Environment.";
+"MainClassNameRequired" = "Main class name is required.";
+"JavaDirectoryNotFound" = "Unable to enumerate Java directory contents.";
diff --git a/src/icons/icns/portecle-alt1.icns b/src/icons/icns/portecle-alt1.icns
new file mode 100644
index 00000000..98b62a2d
Binary files /dev/null and b/src/icons/icns/portecle-alt1.icns differ
diff --git a/src/icons/icns/portecle-alt2.icns b/src/icons/icns/portecle-alt2.icns
new file mode 100644
index 00000000..ad2ab93c
Binary files /dev/null and b/src/icons/icns/portecle-alt2.icns differ
diff --git a/src/icons/icns/portecle-alt3.icns b/src/icons/icns/portecle-alt3.icns
new file mode 100644
index 00000000..559e4c09
Binary files /dev/null and b/src/icons/icns/portecle-alt3.icns differ
diff --git a/src/icons/icns/portecle.icns b/src/icons/icns/portecle.icns
new file mode 100644
index 00000000..6e250215
Binary files /dev/null and b/src/icons/icns/portecle.icns differ