Skip to content

Commit c50fc5c

Browse files
More robust msi unpack when wix4 is used
1 parent 1404e6d commit c50fc5c

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

test/jdk/tools/jpackage/helpers/jdk/jpackage/test/WindowsHelper.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -175,13 +175,19 @@ private static Path unpackMsi(JPackageCommand cmd, Path destinationDir) {
175175
Path installationSubDirectory = getInstallationSubDirectory(cmd);
176176
Path from = Path.of(extraPathComponent).resolve(installationSubDirectory);
177177
Path to = installationSubDirectory;
178-
TKit.trace(String.format("Convert [%s] into [%s] in [%s] directory", from, to,
179-
unpackDir));
178+
180179
ThrowingRunnable.toRunnable(() -> {
181180
Files.createDirectories(unpackDir.resolve(to).getParent());
182-
Files.move(unpackDir.resolve(from), unpackDir.resolve(to));
183-
TKit.deleteDirectoryRecursive(unpackDir.resolve(extraPathComponent));
184181
}).run();
182+
183+
// Files.move() occasionally results into java.nio.file.AccessDeniedException
184+
Executor.tryRunMultipleTimes(ThrowingRunnable.toRunnable(() -> {
185+
TKit.trace(String.format("Convert [%s] into [%s] in [%s] directory", from, to, unpackDir));
186+
final var dstDir = unpackDir.resolve(to);
187+
TKit.deleteDirectoryRecursive(dstDir);
188+
Files.move(unpackDir.resolve(from), dstDir);
189+
TKit.deleteDirectoryRecursive(unpackDir.resolve(extraPathComponent));
190+
}), 3, 5);
185191
}
186192
}
187193
return destinationDir;

0 commit comments

Comments
 (0)