Another NotebookLM job. Bit of a rush, only 73 sources.
Had a request to get a WPF tool working on a Mac. Not important, but a chance to grow my skillz. So Here's the second of two covering it.
Notebook LM Prompt:
```
This is Episode 11 of News Re-Download, a podcast talking about software engineering. We're going over how to get dot net app running on Mac using **Mac Catalyst**. Because we are distributing outside the Mac App Store, you must navigate Apple's strict security model.
Here is the concise implementation guide:
### 1. Prerequisites
* **Hardware:** You cannot build a Mac deployment package from a Windows machine. You must use a physical Mac with Xcode installed.
* **Apple Developer Account:** You need a paid account to generate the certificates required to bypass macOS Gatekeeper.
### 2. Certificates & Provisioning
* **Generate Certificates:** Use Keychain Access on the Mac to create a Certificate Signing Request (CSR). In your Apple Developer portal, generate a **Developer ID Application** certificate (to sign the app) and a **Developer ID Installer** certificate (to sign the `.pkg`). Install both into your Mac's Keychain.
* **Provisioning Profile:** Create an App ID matching your app's Bundle Identifier, then generate a Distribution Provisioning Profile specifically for Mac Catalyst. Download this profile via Xcode.
### 3. Application Configuration
* **Native Mac Look:** By default, Mac Catalyst apps scale like iPad apps. Update your `Info.plist` and set the `UIDeviceFamily` key to `6` (Mac idiom) instead of `2` (iPad idiom) for a traditional desktop feel.
* **Entitlements:** Create an `Entitlements.plist` in `Platforms/MacCatalyst/` to enable App Sandbox (`com.apple.security.app-sandbox`) and Network Client access (`com.apple.security.network.client`) so your app can securely reach the Jira REST API.
* **Fix Build Errors:** To avoid a known `_CodesignVerify` build error when publishing outside the App Store, you must add an MSBuild `` to your `.csproj` to explicitly disable code signature verification.
### 4. Build and Publish
On the Mac, open a terminal in your project directory and use the .NET CLI to compile and sign the package:
```bash
dotnet publish -f net8.0-maccatalyst -c Release -p:CreatePackage=true -p:EnableCodeSigning=true -p:EnablePackageSigning=true -p:CodesignKey="Developer ID Application: Your Name" -p:PackageSigningKey="Developer ID Installer: Your Name"
```
This generates a signed `.pkg` installer file in your output directory.
### 5. Notarize and Staple (Bypassing Gatekeeper)
* **Notarize:** Upload the signed `.pkg` to Apple's servers using the command line `notarytool`. If you skip this step, macOS Gatekeeper will block the installation.
* **Staple:** Once Apple approves the app, run `xcrun stapler staple your_app.pkg`. This staples the approval ticket directly to the installer, allowing your producer to install it safely even if offline.
### 6. Auto-Updates (Sparkle)
For auto-updates on macOS, the Windows AppInstaller won't work. Instead, integrate the **Sparkle** framework.
* Add Sparkle to your project.
* Host an "Appcast" RSS/XML feed on your server to track new versions.
* Sign your updates using EdDSA (ed25519) signatures so Sparkle can securely download and replace the app bundle in the background.
```
This episode includes AI-generated content.