[Tauri] issue track

장동균·2025년 3월 3일
0

updater를 통한 download, relaunch가 불가능한 문제

먼저 entitlements.plist 파일의 역할에 대해 확인한다.

entitlements.plist는 macOS 및 iOS 애플리케이션에서 앱이 사용할 권한(Entitlements)을 정의하는 속성 리스트 파일(Plist)이다.

이 파일은 앱이 특정 기능을 사용하거나 시스템 리소스에 접근할 수 있도록 macOS/iOS의 보안 시스템과 상호 작용하는 데 필요하다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.app-sandbox</key>
    <true/>
    <key>com.apple.security.network.client</key>
    <true/>
    <key>com.apple.security.network.server</key>
    <false/>
    <key>com.apple.security.files.user-selected.read-write</key>
    <true/>
    <key>com.apple.security.cs.allow-jit</key>
    <true/>
</dict>
</plist>
설명
com.apple.security.app-sandbox앱 샌드박스 활성화true or false
com.apple.security.network.client클라이언트 네트워크 요청 허용 (예: HTTP 요청)true or false
com.apple.security.network.server서버 역할 수행 허용 (예: 소켓 서버)true or false
com.apple.security.files.user-selected.read-write사용자가 선택한 파일에 읽기/쓰기 가능true or false
com.apple.security.cs.allow-jitJIT 컴파일 허용 (예: WebAssembly 실행)true or false

https://github.com/tauri-apps/tauri/issues/8258

https://github.com/tauri-apps/plugins-workspace/issues/2273

sandbox 옵션이 활성화된 앱에서는 download, relaunch와 같은 메서드 사용이 불가하다.

sandbox 옵션을 false로 처리하면 약간의 보안 문제와 앱스토어 업로드가 불가능한 이슈가 있다.


dock에서 앱 아이콘을 제거하는 방법

app.set_activation_policy(tauri::ActivationPolicy::Accessory);

앱을 액세서리 모드로 실행시킬 수 있다.

액세서리 모드로 실행된 앱은 Dock에 아이콘이 추가되지 않는다.

액세서리 모드로 실행된 앱은 자신의 메뉴를 노출시키지 않는다는 특징이 있다.

https://github.com/tauri-apps/tauri/discussions/6093

pub fn run() {
  Builder::default()
    .setup(|app| {
			#[cfg(target_os = "macos")]
			app.set_activation_policy(tauri::ActivationPolicy::Accessory);
			Ok(())
		});
}

Rust의 #[cfg(target_os = "macos")]

컴파일러 구성 속성(Attribute)인 cfg(Configuration) 속성을 사용하여 특정 OS에서만 코드를 활성화하는 기능이다.


서명 및 공증

https://v2.tauri.app/distribute/sign/macos

// tauri.conf.json
{
  "build": {},
  "bundle": {
    "active": true,
    "category": "DeveloperTool",
    "icon": ["icons/icon.icns", "icons/icon.png"],
    "macOS": {
      "entitlements": "./entitlements.plist",
      "signingIdentity": "Developer ID Application: Corp (***)"
    },
    "createUpdaterArtifacts": true
  },

  "app": {}
}

signingIdentity 설정을 통해 빌드 시에 서명을 자동 처리할 수 있다.

.envAPPLE_ID, APPLE_PASSWORD, APPLE_TEAM_ID 값을 제공해 공증을 자동 처리할 수 있다.

한가지 문제가 있는데

서명과 공증의 대상은 .app 파일이다. 때문에 생성된 dmg 파일을 대상으로 공증 여부를 확인해보면 공증이 되지 않았음을 알 수 있다.

codesign, xcrun notarytool submit을 통해 dmg 파일에 대한 별도의 공증 처리가 필요하다.

profile
프론트 개발자가 되고 싶어요

0개의 댓글