Skip to content

Commit b0eb392

Browse files
feat: Synchronize bundleVersion with Info.plist
1 parent 033dd70 commit b0eb392

File tree

6 files changed

+37
-25
lines changed

6 files changed

+37
-25
lines changed

.changes/ios-macos-bundleversion.md

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"tauri": minor:feat
3+
---
4+
5+
Added `bundleVersion` to iOS and macOS configuration to support specifying a `CFBundleVersion`.

crates/tauri-bundler/src/bundle/macos/app.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ fn create_info_plist(
220220
"CFBundleShortVersionString".into(),
221221
settings.version_string().into(),
222222
);
223-
plist.insert("CFBundleVersion".into(), settings.bundle_version().unwrap_or_else(|| settings.version_string()).into());
223+
plist.insert("CFBundleVersion".into(), settings.bundle_version().into());
224224
plist.insert("CSResourcesFileMapped".into(), true.into());
225225
if let Some(category) = settings.app_category() {
226226
plist.insert(

crates/tauri-bundler/src/bundle/macos/ios.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ fn generate_info_plist(
178178
writeln!(
179179
file,
180180
" <key>CFBundleVersion</key>\n <string>{}</string>",
181-
settings.bundle_version().unwrap_or_else(|| settings.version_string())
181+
settings.bundle_version()
182182
)?;
183183
writeln!(
184184
file,

crates/tauri-bundler/src/bundle/settings.rs

+4-9
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,8 @@ pub struct PackageSettings {
146146
pub product_name: String,
147147
/// the package's version.
148148
pub version: String,
149+
/// the package's bundle version.
150+
pub bundle_version: String,
149151
/// the package's description.
150152
pub description: String,
151153
/// the package's homepage.
@@ -1105,15 +1107,8 @@ impl Settings {
11051107
}
11061108

11071109
/// Returns the bundle version.
1108-
pub fn bundle_version(&self) -> Option<&str> {
1109-
#[cfg(target_os = "ios")]
1110-
{
1111-
self.bundle_settings.ios.bundle_version.as_deref()
1112-
}
1113-
#[cfg(target_os = "macos")]
1114-
{
1115-
self.bundle_settings.macos.bundle_version.as_deref()
1116-
}
1110+
pub fn bundle_version(&self) -> &str {
1111+
&self.package.bundle_version
11171112
}
11181113

11191114
/// Returns the copyright text.

crates/tauri-cli/src/interface/rust.rs

+24-13
Original file line numberDiff line numberDiff line change
@@ -1016,24 +1016,35 @@ impl RustAppSettings {
10161016
.workspace
10171017
.and_then(|v| v.package);
10181018

1019+
let version = config.version.clone().unwrap_or_else(|| {
1020+
cargo_package_settings
1021+
.version
1022+
.clone()
1023+
.expect("Cargo manifest must have the `package.version` field")
1024+
.resolve("version", || {
1025+
ws_package_settings
1026+
.as_ref()
1027+
.and_then(|p| p.version.clone())
1028+
.ok_or_else(|| anyhow::anyhow!("Couldn't inherit value for `version` from workspace"))
1029+
})
1030+
.expect("Cargo project does not have a version")
1031+
});
1032+
1033+
let bundle_version = if cfg!(target_os = "ios") {
1034+
config.bundle.ios.bundle_version.clone()
1035+
} else if cfg!(target_os = "macos") {
1036+
config.bundle.macos.bundle_version.clone()
1037+
} else {
1038+
None
1039+
};
1040+
10191041
let package_settings = PackageSettings {
10201042
product_name: config
10211043
.product_name
10221044
.clone()
10231045
.unwrap_or_else(|| cargo_package_settings.name.clone()),
1024-
version: config.version.clone().unwrap_or_else(|| {
1025-
cargo_package_settings
1026-
.version
1027-
.clone()
1028-
.expect("Cargo manifest must have the `package.version` field")
1029-
.resolve("version", || {
1030-
ws_package_settings
1031-
.as_ref()
1032-
.and_then(|p| p.version.clone())
1033-
.ok_or_else(|| anyhow::anyhow!("Couldn't inherit value for `version` from workspace"))
1034-
})
1035-
.expect("Cargo project does not have a version")
1036-
}),
1046+
version: version.clone(),
1047+
bundle_version: bundle_version.unwrap_or_else(|| version.clone()),
10371048
description: cargo_package_settings
10381049
.description
10391050
.clone()

crates/tauri-cli/src/mobile/ios/build.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -183,8 +183,9 @@ pub fn command(options: Options, noise_level: NoiseLevel) -> Result<()> {
183183

184184
let mut plist = plist::Dictionary::new();
185185
let version = interface.app_settings().get_package_settings().version;
186+
let bundle_version = interface.app_settings().get_package_settings().bundle_version;
186187
plist.insert("CFBundleShortVersionString".into(), version.clone().into());
187-
plist.insert("CFBundleVersion".into(), version.into());
188+
plist.insert("CFBundleVersion".into(), bundle_version.into());
188189

189190
let info_plist_path = config
190191
.project_dir()

0 commit comments

Comments
 (0)