|
@@ -0,0 +1,58 @@
|
|
|
+// Copyright 2019-2024 Tauri Programme within The Commons Conservancy
|
|
|
+// SPDX-License-Identifier: Apache-2.0
|
|
|
+// SPDX-License-Identifier: MIT
|
|
|
+
|
|
|
+use anyhow::Result;
|
|
|
+use clap::{Parser, Subcommand};
|
|
|
+
|
|
|
+use crate::interface::{AppInterface, AppSettings, Interface};
|
|
|
+
|
|
|
+#[derive(Debug, Parser)]
|
|
|
+#[clap(about = "Manage or create permissions for your app or plugin")]
|
|
|
+pub struct Cli {
|
|
|
+ #[clap(subcommand)]
|
|
|
+ command: Commands,
|
|
|
+}
|
|
|
+
|
|
|
+#[derive(Subcommand, Debug)]
|
|
|
+enum Commands {
|
|
|
+ /// Print the default Upgrade Code used by MSI installer derived from productName.
|
|
|
+ WixUpgradeCode,
|
|
|
+}
|
|
|
+
|
|
|
+pub fn command(cli: Cli) -> Result<()> {
|
|
|
+ match cli.command {
|
|
|
+ Commands::WixUpgradeCode => wix_upgrade_code(),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// NOTE: if this is ever changed, make sure to also update Wix upgrade code generation in tauri-bundler
|
|
|
+fn wix_upgrade_code() -> Result<()> {
|
|
|
+ crate::helpers::app_paths::resolve();
|
|
|
+
|
|
|
+ let target = tauri_utils::platform::Target::Windows;
|
|
|
+ let config = crate::helpers::config::get(target, None)?;
|
|
|
+
|
|
|
+ let interface = AppInterface::new(config.lock().unwrap().as_ref().unwrap(), None)?;
|
|
|
+
|
|
|
+ let product_name = interface.app_settings().get_package_settings().product_name;
|
|
|
+
|
|
|
+ let upgrade_code = uuid::Uuid::new_v5(
|
|
|
+ &uuid::Uuid::NAMESPACE_DNS,
|
|
|
+ format!("{product_name}.exe.app.x64").as_bytes(),
|
|
|
+ )
|
|
|
+ .to_string();
|
|
|
+
|
|
|
+ log::info!("Default WiX Upgrade Code, derived from {product_name}: {upgrade_code}");
|
|
|
+ if let Some(code) = config.lock().unwrap().as_ref().and_then(|c| {
|
|
|
+ c.bundle
|
|
|
+ .windows
|
|
|
+ .wix
|
|
|
+ .as_ref()
|
|
|
+ .and_then(|wix| wix.upgrade_code)
|
|
|
+ }) {
|
|
|
+ log::info!("Application Upgrade Code override: {code}");
|
|
|
+ }
|
|
|
+
|
|
|
+ Ok(())
|
|
|
+}
|