46 import java.util.ResourceBundle;
47
48 import static jdk.jpackage.internal.StandardBundlerParam.*;
49 import static jdk.jpackage.internal.MacBaseInstallerBundler.SIGNING_KEYCHAIN;
50 import static jdk.jpackage.internal.MacBaseInstallerBundler.SIGNING_KEY_USER;
51
52 public class MacPkgBundler extends MacBaseInstallerBundler {
53
54 private static final ResourceBundle I18N = ResourceBundle.getBundle(
55 "jdk.jpackage.internal.resources.MacResources");
56
57 private static final String DEFAULT_BACKGROUND_IMAGE = "background_pkg.png";
58
59 private static final String TEMPLATE_PREINSTALL_SCRIPT =
60 "preinstall.template";
61 private static final String TEMPLATE_POSTINSTALL_SCRIPT =
62 "postinstall.template";
63
64 private static final BundlerParamInfo<File> PACKAGES_ROOT =
65 new StandardBundlerParam<>(
66 I18N.getString("param.packages-root.name"),
67 I18N.getString("param.packages-root.description"),
68 "mac.pkg.packagesRoot",
69 File.class,
70 params -> {
71 File packagesRoot =
72 new File(BUILD_ROOT.fetchFrom(params), "packages");
73 packagesRoot.mkdirs();
74 return packagesRoot;
75 },
76 (s, p) -> new File(s));
77
78
79 protected final BundlerParamInfo<File> SCRIPTS_DIR =
80 new StandardBundlerParam<>(
81 I18N.getString("param.scripts-dir.name"),
82 I18N.getString("param.scripts-dir.description"),
83 "mac.pkg.scriptsDir",
84 File.class,
85 params -> {
86 File scriptsDir =
87 new File(CONFIG_ROOT.fetchFrom(params), "scripts");
88 scriptsDir.mkdirs();
89 return scriptsDir;
90 },
91 (s, p) -> new File(s));
92
93 public static final
94 BundlerParamInfo<String> DEVELOPER_ID_INSTALLER_SIGNING_KEY =
95 new StandardBundlerParam<>(
96 I18N.getString("param.signing-key-developer-id-installer.name"),
97 I18N.getString(
98 "param.signing-key-developer-id-installer.description"),
99 "mac.signing-key-developer-id-installer",
100 String.class,
101 params -> {
102 String result = MacBaseInstallerBundler.findKey(
103 "Developer ID Installer: "
104 + SIGNING_KEY_USER.fetchFrom(params),
105 SIGNING_KEYCHAIN.fetchFrom(params),
106 VERBOSE.fetchFrom(params));
107 if (result != null) {
108 MacCertificate certificate = new MacCertificate(
109 result, VERBOSE.fetchFrom(params));
110
111 if (!certificate.isValid()) {
112 Log.error(MessageFormat.format(
113 I18N.getString("error.certificate.expired"),
114 result));
115 }
116 }
117
118 return result;
119 },
120 (s, p) -> s);
121
122 public static final BundlerParamInfo<String> MAC_INSTALL_DIR =
123 new StandardBundlerParam<>(
124 I18N.getString("param.mac-install-dir.name"),
125 I18N.getString("param.mac-install-dir.description"),
126 "mac-install-dir",
127 String.class,
128 params -> {
129 String dir = INSTALL_DIR.fetchFrom(params);
130 return (dir != null) ? dir : "/Applications";
131 },
132 (s, p) -> s
133 );
134
135 public static final BundlerParamInfo<String> INSTALLER_SUFFIX =
136 new StandardBundlerParam<> (
137 I18N.getString("param.installer-suffix.name"),
138 I18N.getString("param.installer-suffix.description"),
139 "mac.pkg.installerName.suffix",
140 String.class,
141 params -> "",
142 (s, p) -> s);
143
144 public File bundle(Map<String, ? super Object> params,
145 File outdir) throws PackagerException {
146 Log.verbose(MessageFormat.format(I18N.getString("message.building-pkg"),
147 APP_NAME.fetchFrom(params)));
148 if (!outdir.isDirectory() && !outdir.mkdirs()) {
149 throw new PackagerException(
150 "error.cannot-create-output-dir",
151 outdir.getAbsolutePath());
152 }
153 if (!outdir.canWrite()) {
154 throw new PackagerException(
155 "error.cannot-write-to-output-dir",
156 outdir.getAbsolutePath());
157 }
158
|
46 import java.util.ResourceBundle;
47
48 import static jdk.jpackage.internal.StandardBundlerParam.*;
49 import static jdk.jpackage.internal.MacBaseInstallerBundler.SIGNING_KEYCHAIN;
50 import static jdk.jpackage.internal.MacBaseInstallerBundler.SIGNING_KEY_USER;
51
52 public class MacPkgBundler extends MacBaseInstallerBundler {
53
54 private static final ResourceBundle I18N = ResourceBundle.getBundle(
55 "jdk.jpackage.internal.resources.MacResources");
56
57 private static final String DEFAULT_BACKGROUND_IMAGE = "background_pkg.png";
58
59 private static final String TEMPLATE_PREINSTALL_SCRIPT =
60 "preinstall.template";
61 private static final String TEMPLATE_POSTINSTALL_SCRIPT =
62 "postinstall.template";
63
64 private static final BundlerParamInfo<File> PACKAGES_ROOT =
65 new StandardBundlerParam<>(
66 "mac.pkg.packagesRoot",
67 File.class,
68 params -> {
69 File packagesRoot =
70 new File(TEMP_ROOT.fetchFrom(params), "packages");
71 packagesRoot.mkdirs();
72 return packagesRoot;
73 },
74 (s, p) -> new File(s));
75
76
77 protected final BundlerParamInfo<File> SCRIPTS_DIR =
78 new StandardBundlerParam<>(
79 "mac.pkg.scriptsDir",
80 File.class,
81 params -> {
82 File scriptsDir =
83 new File(CONFIG_ROOT.fetchFrom(params), "scripts");
84 scriptsDir.mkdirs();
85 return scriptsDir;
86 },
87 (s, p) -> new File(s));
88
89 public static final
90 BundlerParamInfo<String> DEVELOPER_ID_INSTALLER_SIGNING_KEY =
91 new StandardBundlerParam<>(
92 "param.signing-key-developer-id-installer.description"),
93 "mac.signing-key-developer-id-installer",
94 String.class,
95 params -> {
96 String result = MacBaseInstallerBundler.findKey(
97 "Developer ID Installer: "
98 + SIGNING_KEY_USER.fetchFrom(params),
99 SIGNING_KEYCHAIN.fetchFrom(params),
100 VERBOSE.fetchFrom(params));
101 if (result != null) {
102 MacCertificate certificate = new MacCertificate(
103 result, VERBOSE.fetchFrom(params));
104
105 if (!certificate.isValid()) {
106 Log.error(MessageFormat.format(
107 I18N.getString("error.certificate.expired"),
108 result));
109 }
110 }
111
112 return result;
113 },
114 (s, p) -> s);
115
116 public static final BundlerParamInfo<String> MAC_INSTALL_DIR =
117 new StandardBundlerParam<>(
118 "mac-install-dir",
119 String.class,
120 params -> {
121 String dir = INSTALL_DIR.fetchFrom(params);
122 return (dir != null) ? dir : "/Applications";
123 },
124 (s, p) -> s
125 );
126
127 public static final BundlerParamInfo<String> INSTALLER_SUFFIX =
128 new StandardBundlerParam<> (
129 "mac.pkg.installerName.suffix",
130 String.class,
131 params -> "",
132 (s, p) -> s);
133
134 public File bundle(Map<String, ? super Object> params,
135 File outdir) throws PackagerException {
136 Log.verbose(MessageFormat.format(I18N.getString("message.building-pkg"),
137 APP_NAME.fetchFrom(params)));
138 if (!outdir.isDirectory() && !outdir.mkdirs()) {
139 throw new PackagerException(
140 "error.cannot-create-output-dir",
141 outdir.getAbsolutePath());
142 }
143 if (!outdir.canWrite()) {
144 throw new PackagerException(
145 "error.cannot-write-to-output-dir",
146 outdir.getAbsolutePath());
147 }
148
|