On Thu, 7 Jul 2022 19:30:07 GMT, Alexander Matveev <[email protected]> wrote:
>> src/jdk.jpackage/macosx/classes/jdk/jpackage/internal/MacBaseInstallerBundler.java
>> line 171:
>>
>>> 169:
>>> Files.deleteIfExists(AppImageFile.getPathInAppImage(appDir));
>>> 170: }
>>> 171:
>>
>> I think there is no need to modify AbstractAppImageBuilder.java, and
>> AppImageBundler.java.
>> It is sufficient to modify the condition controlling the creation of
>> `.package` file:
>>
>> if (predefinedImage == null ||
>> (!StandardBundlerParam.isRuntimeInstaller(params) &&
>> !AppImageFile.load(predefinedImage).isSigned())) {
>> new PackageFile(APP_NAME.fetchFrom(params)).save(
>> ApplicationLayout.macAppImage().resolveAt(appDir));
>> Files.deleteIfExists(AppImageFile.getPathInAppImage(appDir));
>> }
>>
>> Besides `.package` file logically doesn't belong to app image, it belongs to
>> the installed application, so it must not be referenced from the classes
>> creating app images.
>
> We need to add `.package` file during app image creation, since we need to
> sign it. With your proposed change we will add `.package` file to already
> signed app image.
Oh, right.
Anyways let's keep `.package`-related stuff away from
AbstractAppImageBuilder.java, and AppImageBundler.java.
I'd move `.package`-related logic from AbstractAppImageBuilder to
MacAppImageBuilder and change
public MacAppBundler() {
setAppImageSupplier(MacAppImageBuilder::new);
setParamsValidator(MacAppBundler::doValidate);
}
to something like this
public MacAppBundler() {
public MacAppBundler() {
setAppImageSupplier(imageOutDir -> {
return new MacAppImageBuilder(imageOutDir, isDependentTask());
});
setParamsValidator(MacAppBundler::doValidate);
}
Need to add `AppImageBundler.sDependentTask()` method and change signature if
MacAppImageBuilder ctor from `MacAppImageBuilder(Path imageOutDir)` to
`MacAppImageBuilder(Path imageOutDir, boolean withPackageFile)`
-------------
PR: https://git.openjdk.org/jdk19/pull/89