diff --git a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
index 8d9c3a02b92aef6b2a40024a8eebdb39cf60d1c7..3058ce485d9824e1fbe1ee869008c00dab561d06 100644
--- a/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
+++ b/Core/src/org/sleuthkit/autopsy/coreutils/ImageUtils.java
@@ -126,9 +126,9 @@ public class ImageUtils {
         if (OpenCvLoader.openCvIsLoaded()) {
             try {
                 if (System.getProperty("os.arch").equals("amd64") || System.getProperty("os.arch").equals("x86_64")) { //NON-NLS
-                    System.loadLibrary("opencv_ffmpeg248_64"); //NON-NLS
+                    System.loadLibrary("opencv_ffmpeg2413_64"); //NON-NLS
                 } else {
-                    System.loadLibrary("opencv_ffmpeg248"); //NON-NLS
+                    System.loadLibrary("opencv_ffmpeg2413"); //NON-NLS
                 }
                 tempFfmpegLoaded = true;
             } catch (UnsatisfiedLinkError e) {
diff --git a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ALeappAnalyzerIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ALeappAnalyzerIngestModule.java
index d9f673ac369efa354165d2824751b64d8a040ec7..1332ff40cd7afb905d6375d535f9da88a62fc0e4 100644
--- a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ALeappAnalyzerIngestModule.java
+++ b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ALeappAnalyzerIngestModule.java
@@ -289,12 +289,13 @@ private void processALeappFs(Content dataSource, Case currentCase, DataSourceIng
     private ProcessBuilder buildaLeappCommand(Path moduleOutputPath, String sourceFilePath, String aLeappFileSystemType) {
 
         ProcessBuilder processBuilder = buildProcessWithRunAsInvoker(
-                "\"" + aLeappExecutable + "\"", //NON-NLS
+                aLeappExecutable.getAbsolutePath(), //NON-NLS
                 "-t", aLeappFileSystemType, //NON-NLS
                 "-i", sourceFilePath, //NON-NLS
                 "-o", moduleOutputPath.toString(),
                 "-w"
         );
+        processBuilder.directory(moduleOutputPath.toFile());
         processBuilder.redirectError(moduleOutputPath.resolve("aLeapp_err.txt").toFile());  //NON-NLS
         processBuilder.redirectOutput(moduleOutputPath.resolve("aLeapp_out.txt").toFile());  //NON-NLS
         return processBuilder;
@@ -303,9 +304,11 @@ private ProcessBuilder buildaLeappCommand(Path moduleOutputPath, String sourceFi
     private ProcessBuilder buildaLeappListCommand(Path moduleOutputPath) {
 
         ProcessBuilder processBuilder = buildProcessWithRunAsInvoker(
-                "\"" + aLeappExecutable + "\"", //NON-NLS
+                aLeappExecutable.getAbsolutePath(), //NON-NLS
                 "-p"
         );
+        // leapp process creates a text file in addition to outputting to stdout.
+        processBuilder.directory(moduleOutputPath.toFile());
         processBuilder.redirectError(moduleOutputPath.resolve("aLeapp_paths_error.txt").toFile());  //NON-NLS
         processBuilder.redirectOutput(moduleOutputPath.resolve("aLeapp_paths.txt").toFile());  //NON-NLS
         return processBuilder;
diff --git a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ILeappAnalyzerIngestModule.java b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ILeappAnalyzerIngestModule.java
index 4d8328ce3d137f3a31bac362b9b7d719c8e37c45..f522d2fdd1c6acf6d58b3e719672980f5befc8c1 100644
--- a/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ILeappAnalyzerIngestModule.java
+++ b/Core/src/org/sleuthkit/autopsy/modules/leappanalyzers/ILeappAnalyzerIngestModule.java
@@ -289,11 +289,12 @@ private void processILeappFs(Content dataSource, Case currentCase, DataSourceIng
     private ProcessBuilder buildiLeappCommand(Path moduleOutputPath, String sourceFilePath, String iLeappFileSystemType) {
 
         ProcessBuilder processBuilder = buildProcessWithRunAsInvoker(
-                "\"" + iLeappExecutable + "\"", //NON-NLS
+                iLeappExecutable.getAbsolutePath(), //NON-NLS
                 "-t", iLeappFileSystemType, //NON-NLS
                 "-i", sourceFilePath, //NON-NLS
                 "-o", moduleOutputPath.toString()
         );
+        processBuilder.directory(moduleOutputPath.toFile());
         processBuilder.redirectError(moduleOutputPath.resolve("iLeapp_err.txt").toFile());  //NON-NLS
         processBuilder.redirectOutput(moduleOutputPath.resolve("iLeapp_out.txt").toFile());  //NON-NLS
         return processBuilder;
@@ -309,9 +310,11 @@ private ProcessBuilder buildiLeappCommand(Path moduleOutputPath, String sourceFi
     private ProcessBuilder buildiLeappListCommand(Path moduleOutputPath) {
 
         ProcessBuilder processBuilder = buildProcessWithRunAsInvoker(
-                "\"" + iLeappExecutable + "\"", //NON-NLS
+                iLeappExecutable.getAbsolutePath(), //NON-NLS
                 "-p"
         );
+        // leapp process also outputs a file to the working directory in addition to stdout.
+        processBuilder.directory(moduleOutputPath.toFile());
         processBuilder.redirectError(moduleOutputPath.resolve("iLeapp_paths_error.txt").toFile());  //NON-NLS
         processBuilder.redirectOutput(moduleOutputPath.resolve("iLeapp_paths.txt").toFile());  //NON-NLS
         return processBuilder;
diff --git a/CoreLibs/nbproject/project.properties b/CoreLibs/nbproject/project.properties
index 7cff41ed039ef3cd1a81fd77fa47b0ca34b71075..b8ef72969a00d7bcca6c970d6e2dcac9d586427d 100644
--- a/CoreLibs/nbproject/project.properties
+++ b/CoreLibs/nbproject/project.properties
@@ -129,7 +129,6 @@ file.reference.opencensus-api-0.31.0.jar=release/modules/ext/opencensus-api-0.31
 file.reference.opencensus-contrib-http-util-0.31.0.jar=release/modules/ext/opencensus-contrib-http-util-0.31.0.jar
 file.reference.opencensus-proto-0.2.0.jar=release/modules/ext/opencensus-proto-0.2.0.jar
 file.reference.opencv-2413.jar=release/modules/ext/opencv-2413.jar
-file.reference.opencv-248.jar=release/modules/ext/opencv-248.jar
 file.reference.perfmark-api-0.23.0.jar=release/modules/ext/perfmark-api-0.23.0.jar
 file.reference.proto-google-cloud-translate-v3-2.1.11.jar=release/modules/ext/proto-google-cloud-translate-v3-2.1.11.jar
 file.reference.proto-google-cloud-translate-v3beta1-0.83.11.jar=release/modules/ext/proto-google-cloud-translate-v3beta1-0.83.11.jar
diff --git a/CoreLibs/nbproject/project.xml b/CoreLibs/nbproject/project.xml
index f7818a9522eaee1cc24ec95337a567906323552d..8e8b42928b5dd699c9ac922bfcf2fe7d6be41473 100644
--- a/CoreLibs/nbproject/project.xml
+++ b/CoreLibs/nbproject/project.xml
@@ -324,7 +324,7 @@
                 <package>javax.annotation</package>
                 <package>javax.annotation.concurrent</package>
                 <package>javax.annotation.meta</package>
-<package>javafx.animation</package>
+                <package>javafx.animation</package>
                 <package>javafx.application</package>
                 <package>javafx.beans</package>
                 <package>javafx.beans.binding</package>
@@ -1111,10 +1111,6 @@
                 <runtime-relative-path>ext/opencv-2413.jar</runtime-relative-path>
                 <binary-origin>release/modules/ext/opencv-2413.jar</binary-origin>
             </class-path-extension>
-            <class-path-extension>
-                <runtime-relative-path>ext/opencv-248.jar</runtime-relative-path>
-                <binary-origin>release/modules/ext/opencv-248.jar</binary-origin>
-            </class-path-extension>
             <class-path-extension>
                 <runtime-relative-path>ext/perfmark-api-0.23.0.jar</runtime-relative-path>
                 <binary-origin>release/modules/ext/perfmark-api-0.23.0.jar</binary-origin>
diff --git a/Running_Linux_OSX.md b/Running_Linux_OSX.md
index fbc4828c29097c2aa66d74145b3fce6179f691f0..c35ca091e0ef2c95a9deae67dc161b7caa0582e0 100644
--- a/Running_Linux_OSX.md
+++ b/Running_Linux_OSX.md
@@ -9,7 +9,7 @@ When installing on Debian-based Linux or macOS systems, there are three general
 
 # Installing The Sleuth Kit
 - **Linux**: Download the .deb file for the release you want to install from the [release section](https://github.com/sleuthkit/sleuthkit/releases).  Install The Sleuth Kit package from the repositories with the following command: `sudo apt update && sudo apt install /path/to/sleuthkit-version.deb`.
-- **macOS**: Ensure that for this session, your `JAVA_HOME` variable is set to the java 17 installation by running `export JAVA_HOME=$(/usr/libexec/java_home -v 17)/bin/java`.  Then, install The Sleuth Kit from source by running [`linux_macos_install_scripts/install_tsk_from_src.sh`](./linux_macos_install_scripts/install_tsk_from_src.sh), which will download, build, and install The Sleuth Kit.  It can be run as follows: `install_tsk_from_src.sh -p ~/src/sleuthkit -b sleuthkit-4.11.1`.  Make sure that your path to download source ends with "sleuthkit" as the last directory, and the release is the corresponding tag in the [repository](https://github.com/sleuthkit/sleuthkit).
+- **macOS**: Ensure that for this session, your `JAVA_HOME` variable is set to the java 17 installation by running `export JAVA_HOME=$(/usr/libexec/java_home -v 17)`.  Then, install The Sleuth Kit from source by running [`linux_macos_install_scripts/install_tsk_from_src.sh`](./linux_macos_install_scripts/install_tsk_from_src.sh), which will download, build, and install The Sleuth Kit.  It can be run as follows: `install_tsk_from_src.sh -p ~/src/sleuthkit -b sleuthkit-4.11.1`.  Make sure that your path to download source ends with "sleuthkit" as the last directory, and the release is the corresponding tag in the [repository](https://github.com/sleuthkit/sleuthkit).
 
 # Installing Autopsy
 - Download the Autopsy zip file from [repository releases](https://github.com/sleuthkit/autopsy/releases).  The file will be marked as "autopsy-&lt;release&gt;.zip" (i.e. "autopsy-4.19.2.zip").
diff --git a/build-windows-installer.xml b/build-windows-installer.xml
index 41c8fd205846ee183a17a0227f3678a468d10e7e..92e5871d4b03039393431cc65ea9cf014f3d5a53 100644
--- a/build-windows-installer.xml
+++ b/build-windows-installer.xml
@@ -27,19 +27,6 @@
                 <echo message="32-bit JRE not found. No 32-bit installer will be built. Set the JRE_HOME_32 environment variable to generate a 32-bit installer."/>
             </else>
         </if> -->
-        
-        <condition property="jre.home.64">
-            <isset property="env.JRE_HOME_64"/>
-        </condition>
-        <if>
-            <isset property="jre.home.64" />
-            <then>
-                <echo message="64-bit JRE found, 64-bit installer will be built."/>
-            </then>
-            <else>
-                <echo message="64-bit JRE not found. No 64-bit installer will be built. Set the JRE_HOME_64 environment variable to generate a 64-bit installer."/>
-            </else>
-        </if>
 
         <property name="lib-rel-path" value="${app.name}\modules\lib" />
         <!-- where libs are in build folder; forward slashes because not used directly by advanced installer -->
@@ -100,14 +87,27 @@
     
 
     <target name="copyJRE" description="Copy a given JRE to the installation folder">
-        <var name="new-jre-path" value="${inst-path}\jre"/>
-        <delete failonerror="false" dir="${new-jre-path}"/>
-        <mkdir dir="${new-jre-path}"/>
-        <copy todir="${new-jre-path}" overwrite="true">
-            <fileset dir="${jre-path}">
-                <include name="**/*"/>
-            </fileset>
-        </copy>
+        <property environment="env"/>
+        <if>
+            <isset property="env.JDK_HOME" />
+            <then>
+                <echo message="JDK found at: ${env.JDK_HOME}."/>
+            </then>
+            <else>
+                <fail message="Environment variable, JDK_HOME, not set.  Cannot build installer."/>
+            </else>
+        </if>
+
+
+        <exec executable="${env.JDK_HOME}/bin/jlink" dir="${inst-path}">
+            <arg value="--add-modules"/>
+            <arg value="ALL-MODULE-PATH"/>
+            <arg value="--output"/>
+            <arg value="jre"/>
+            <arg value="--no-man-pages"/>
+            <arg value="--no-header-files"/>
+            <arg value="--compress=2"/>
+        </exec>
     </target>
     
     
@@ -140,7 +140,7 @@
     
     
 
-    <target name="build64" if="jre.home.64" description="Builds the 64 bit installer IF JRE_HOME_64 is set.">
+    <target name="build64" description="Builds the 64 bit installer IF JRE_HOME_64 is set.">
         <property environment="env"/>
         <var name="aip-path" value="${aip-path-64}"/>
         
diff --git a/linux_macos_install_scripts/install_prereqs_macos.sh b/linux_macos_install_scripts/install_prereqs_macos.sh
index de9b3b22a324843fb6619520a1b9ba195e71c431..79dea276c293a8dff7ea1b49bfcd44cd3ba75655 100644
--- a/linux_macos_install_scripts/install_prereqs_macos.sh
+++ b/linux_macos_install_scripts/install_prereqs_macos.sh
@@ -8,5 +8,15 @@ then
     exit 1
 fi
 
+sudo ln -sfn $HOMEBREW_PREFIX/opt/openjdk@17/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk && \
+echo "export PATH=\"$HOMEBREW_PREFIX/opt/openjdk@17/bin:$PATH\"" >> ~/.zshrc && \
+source ~/.zshrc
+
+if [[ $? -ne 0 ]] 
+then 
+    echo "Unable to properly set up java env" >> /dev/stderr
+    exit 1
+fi
+
 java_path=$(/usr/libexec/java_home -v 17)
 echo "Java 17 path: $java_path"
\ No newline at end of file
diff --git a/thirdparty/opencv/README.txt b/thirdparty/opencv/README.txt
new file mode 100644
index 0000000000000000000000000000000000000000..94e4551dba7d0ea97827ff80b876bcec3146e281
--- /dev/null
+++ b/thirdparty/opencv/README.txt
@@ -0,0 +1,4 @@
+README:
+
+This is OpenCV jar and binaries from version 2.4.13.6 from opencv downloads:
+https://opencv.org/releases
\ No newline at end of file
diff --git a/thirdparty/opencv/ext/opencv-248.jar b/thirdparty/opencv/ext/opencv-248.jar
deleted file mode 100755
index f09b29077dbdd89cef6182f191e9de84b3f00056..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/ext/opencv-248.jar and /dev/null differ
diff --git a/thirdparty/opencv/lib/amd64/opencv_ffmpeg248_64.dll b/thirdparty/opencv/lib/amd64/opencv_ffmpeg248_64.dll
deleted file mode 100755
index 37236e5424ac1a311380564e77025a3b94640be2..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/amd64/opencv_ffmpeg248_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/amd64/opencv_java248.dll b/thirdparty/opencv/lib/amd64/opencv_java248.dll
deleted file mode 100755
index ab989a6b11ead0436e7fb7a19557ea92fd9a6060..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/amd64/opencv_java248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i386/opencv_ffmpeg2413.dll b/thirdparty/opencv/lib/i386/opencv_ffmpeg2413.dll
deleted file mode 100644
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i386/opencv_ffmpeg2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i386/opencv_ffmpeg248.dll b/thirdparty/opencv/lib/i386/opencv_ffmpeg248.dll
deleted file mode 100755
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i386/opencv_ffmpeg248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i386/opencv_java2413.dll b/thirdparty/opencv/lib/i386/opencv_java2413.dll
deleted file mode 100644
index c25b6209f8a80dd086dbd792703525c2bfd2c3a3..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i386/opencv_java2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i386/opencv_java248.dll b/thirdparty/opencv/lib/i386/opencv_java248.dll
deleted file mode 100755
index f1c1bc9a4328f32642fb86e20480139138ba6fc0..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i386/opencv_java248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i586/opencv_ffmpeg2413_64.dll b/thirdparty/opencv/lib/i586/opencv_ffmpeg2413_64.dll
deleted file mode 100644
index 37236e5424ac1a311380564e77025a3b94640be2..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i586/opencv_ffmpeg2413_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i586/opencv_ffmpeg248_64.dll b/thirdparty/opencv/lib/i586/opencv_ffmpeg248_64.dll
deleted file mode 100755
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i586/opencv_ffmpeg248_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i586/opencv_java2413.dll b/thirdparty/opencv/lib/i586/opencv_java2413.dll
deleted file mode 100644
index e1aeca4ba56b571f74e7d4ceb4912a3ec1e52499..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i586/opencv_java2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i586/opencv_java248.dll b/thirdparty/opencv/lib/i586/opencv_java248.dll
deleted file mode 100755
index f1c1bc9a4328f32642fb86e20480139138ba6fc0..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i586/opencv_java248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i686/opencv_ffmpeg2413_64.dll b/thirdparty/opencv/lib/i686/opencv_ffmpeg2413_64.dll
deleted file mode 100644
index 37236e5424ac1a311380564e77025a3b94640be2..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i686/opencv_ffmpeg2413_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i686/opencv_ffmpeg248_64.dll b/thirdparty/opencv/lib/i686/opencv_ffmpeg248_64.dll
deleted file mode 100755
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i686/opencv_ffmpeg248_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i686/opencv_java2413.dll b/thirdparty/opencv/lib/i686/opencv_java2413.dll
deleted file mode 100644
index e1aeca4ba56b571f74e7d4ceb4912a3ec1e52499..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i686/opencv_java2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/i686/opencv_java248.dll b/thirdparty/opencv/lib/i686/opencv_java248.dll
deleted file mode 100755
index f1c1bc9a4328f32642fb86e20480139138ba6fc0..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/i686/opencv_java248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86/opencv_ffmpeg2413.dll b/thirdparty/opencv/lib/x86/opencv_ffmpeg2413.dll
deleted file mode 100644
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86/opencv_ffmpeg2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86/opencv_ffmpeg248.dll b/thirdparty/opencv/lib/x86/opencv_ffmpeg248.dll
deleted file mode 100755
index b1e70df6a3e0059530f13800ae675820081388dc..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86/opencv_ffmpeg248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86/opencv_java2413.dll b/thirdparty/opencv/lib/x86/opencv_java2413.dll
deleted file mode 100644
index c25b6209f8a80dd086dbd792703525c2bfd2c3a3..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86/opencv_java2413.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86/opencv_java248.dll b/thirdparty/opencv/lib/x86/opencv_java248.dll
deleted file mode 100755
index f1c1bc9a4328f32642fb86e20480139138ba6fc0..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86/opencv_java248.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86_64/opencv_ffmpeg248_64.dll b/thirdparty/opencv/lib/x86_64/opencv_ffmpeg248_64.dll
deleted file mode 100755
index 37236e5424ac1a311380564e77025a3b94640be2..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86_64/opencv_ffmpeg248_64.dll and /dev/null differ
diff --git a/thirdparty/opencv/lib/x86_64/opencv_java248.dll b/thirdparty/opencv/lib/x86_64/opencv_java248.dll
deleted file mode 100755
index ab989a6b11ead0436e7fb7a19557ea92fd9a6060..0000000000000000000000000000000000000000
Binary files a/thirdparty/opencv/lib/x86_64/opencv_java248.dll and /dev/null differ