Ver código fonte

fix(bundler): appimage paths and filename (#1227)

Lucas Fernandes Nogueira 4 anos atrás
pai
commit
ae76c60a61

+ 5 - 0
.changes/appimage-path.md

@@ -0,0 +1,5 @@
+---
+"tauri-bundler": patch
+---
+
+Append app version and OS architecture on AppImage output filename.

+ 1 - 8
cli/tauri-bundler/src/bundle.rs

@@ -32,14 +32,7 @@ use std::path::PathBuf;
 /// Returns the list of paths where the bundles can be found.
 pub fn bundle_project(settings: Settings) -> crate::Result<Vec<PathBuf>> {
   let mut paths = Vec::new();
-  let mut package_types = settings.package_types()?;
-  // The AppImage bundle script requires that the Deb bundle be run first
-  if package_types.contains(&PackageType::AppImage) {
-    if let Some(deb_pos) = package_types.iter().position(|&p| p == PackageType::Deb) {
-      package_types.remove(deb_pos);
-    }
-    package_types.insert(0, PackageType::Deb);
-  }
+  let package_types = settings.package_types()?;
   for package_type in &package_types {
     let mut bundle_paths = match package_type {
       PackageType::OsxBundle => {

+ 10 - 11
cli/tauri-bundler/src/bundle/appimage_bundle.rs

@@ -40,14 +40,7 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
     "x86_64" => "amd64",
     other => other,
   };
-  let package_base_name = format!(
-    "{}_{}_{}",
-    settings.main_binary_name(),
-    settings.version_string(),
-    arch
-  );
-  let base_dir = settings.project_out_directory().join("bundle/appimage_deb");
-  let package_dir = base_dir.join(&package_base_name);
+  let package_dir = settings.project_out_directory().join("bundle/appimage_deb");
 
   // generate deb_folder structure
   deb_bundle::generate_data(settings, &package_dir)?;
@@ -58,7 +51,13 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
   }
   std::fs::create_dir_all(output_path.clone())?;
   let app_dir_path = output_path.join(format!("{}.AppDir", settings.main_binary_name()));
-  let appimage_path = output_path.join(format!("{}.AppImage", settings.main_binary_name()));
+  let appimage_filename = format!(
+    "{}_{}_{}.AppImage",
+    settings.main_binary_name(),
+    settings.version_string(),
+    arch
+  );
+  let appimage_path = output_path.join(&appimage_filename);
   path_utils::create(app_dir_path, true)?;
 
   let upcase_app_name = settings.main_binary_name().to_uppercase();
@@ -66,8 +65,8 @@ pub fn bundle_project(settings: &Settings) -> crate::Result<Vec<PathBuf>> {
   // setup data to insert into shell script
   let mut sh_map = BTreeMap::new();
   sh_map.insert("app_name", settings.main_binary_name());
-  sh_map.insert("bundle_name", package_base_name.as_str());
-  sh_map.insert("app_name_uppercase", upcase_app_name.as_str());
+  sh_map.insert("app_name_uppercase", &upcase_app_name);
+  sh_map.insert("appimage_filename", &appimage_filename);
 
   // initialize shell script template.
   let temp = HANDLEBARS.render("appimage", &sh_map)?;

+ 3 - 3
cli/tauri-bundler/src/bundle/templates/appimage

@@ -5,7 +5,7 @@ set -euxo pipefail
 export ARCH=x86_64
 
 mkdir -p {{app_name}}.AppDir
-cp -r ../deb/{{bundle_name}}/data/usr {{app_name}}.AppDir
+cp -r ../appimage_deb/data/usr {{app_name}}.AppDir
 
 cd {{app_name}}.AppDir
 
@@ -34,9 +34,9 @@ mksquashfs {{app_name}}.AppDir {{app_name}}.squashfs -root-owned -noappend
 wget -q -4 -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage || wget -q -4 -O appimagetool https://github.com/AppImage/AppImageKit/releases/download/12/appimagetool-x86_64.AppImage
 chmod +x appimagetool
 if lsmod | grep -q fuse; then
-  ./appimagetool {{app_name}}.AppDir {{app_name}}.AppImage
+  ./appimagetool {{app_name}}.AppDir {{appimage_filename}}
 else
   ./appimagetool --appimage-extract
-  ./squashfs-root/AppRun {{app_name}}.AppDir {{app_name}}.AppImage
+  ./squashfs-root/AppRun {{app_name}}.AppDir {{appimage_filename}}
   rm -rf ./squashfs-root
 fi