<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Distribution on hobbyworker취미생활자</title>
    <link>https://hobbyworker.me/en/tags/distribution/</link>
    <description>Recent content in Distribution on hobbyworker취미생활자</description>
    <generator>Hugo</generator>
    <language>en</language>
    <copyright>2026 hobbyworker</copyright>
    <lastBuildDate>Thu, 21 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://hobbyworker.me/en/tags/distribution/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Designing a Distribution DMG for Your macOS App (2): Window and Icon Layout Coordinates, and Automation</title>
      <link>https://hobbyworker.me/en/dev/2026-05-21-design-macos-dmg-2-layout-coordinates/</link>
      <pubDate>Thu, 21 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-21-design-macos-dmg-2-layout-coordinates/</guid>
      <description>The size of a DMG window and the placement of its icons are all decided by coordinates. Using the example app FocusTimer, this article explains create-dmg&amp;#39;s window size and position, icon size, and the X/Y coordinates of the app icon and the Applications drop link one by one, shows how to align the background image&amp;#39;s pixel coordinates with the window&amp;#39;s point coordinates, and covers how to automate this process so it can be reused for every release.</description>
    </item>
    <item>
      <title>Designing a Distribution DMG for Your macOS App (1): create-dmg and Preparing the Background Image</title>
      <link>https://hobbyworker.me/en/dev/2026-05-20-design-macos-dmg-1-create-dmg-and-background/</link>
      <pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-20-design-macos-dmg-1-create-dmg-and-background/</guid>
      <description>When you distribute a macOS app yourself, the very first thing a user sees is the Finder window that opens when they double-click the .dmg. Using the example app FocusTimer, this article introduces the create-dmg tool, walks through preparing a staging folder that holds only the .app, and shows how to build a DMG background image that follows the @2x Retina convention while avoiding the DPI pitfall.</description>
    </item>
    <item>
      <title>Shipping a macOS App to the Mac App Store (3): Upload Settings and App Store Connect Registration</title>
      <link>https://hobbyworker.me/en/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-19-distribute-macos-app-mas-3-export-and-app-store-connect/</guid>
      <description>Once you&amp;#39;ve finished the MAS build target and the configuration and code branching, it&amp;#39;s time to set up the path for getting that build onto the App Store. Using the example app FocusTimer, this post wraps up the series by covering how to write an ExportOptions-MAS.plist for upload, register an app record in App Store Connect, and verify the build so the two channels stay unbroken.</description>
    </item>
    <item>
      <title>Shipping a macOS App to the Mac App Store (2): Splitting Configuration and Code Between Channels</title>
      <link>https://hobbyworker.me/en/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</link>
      <pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-18-distribute-macos-app-mas-2-build-config-and-code/</guid>
      <description>Once you&amp;#39;ve created a build target for MAS, you need to split the configuration files and code so that target actually follows the App Store rules. Using the example app FocusTimer, this post walks through creating MAS-only entitlements and Info.plist files, aligning the build settings, and branching the automatic update code with #if canImport(Sparkle).</description>
    </item>
    <item>
      <title>Shipping a macOS App to the Mac App Store (1): Creating a Separate Build Target</title>
      <link>https://hobbyworker.me/en/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</link>
      <pubDate>Sun, 17 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-17-distribute-macos-app-mas-1-target-setup/</guid>
      <description>Shipping a macOS app to the Mac App Store requires a build target separate from the one used for direct distribution, because App Store review forbids self-contained automatic updaters like Sparkle. Using the example app FocusTimer, this post walks through registering a MAS-only Bundle ID, duplicating the build target in Xcode, and handling the cleanup burden that duplication leaves behind.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (3): Hosting the Update Feed and Build Settings</title>
      <link>https://hobbyworker.me/en/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</link>
      <pubDate>Sat, 16 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-16-distribute-macos-app-3-update-hosting-and-build/</guid>
      <description>The automatic-update feed for a directly distributed macOS app must be hosted at a public location accessible without authentication. Using the example app FocusTimer, this article hosts the update repository with GitHub Pages, connects it to a custom domain you control, and finishes the ExportOptions.plist and app-side configuration to complete the one-time setup for direct distribution.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (2): Creating the Sparkle Auto-Update Signing Key</title>
      <link>https://hobbyworker.me/en/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</link>
      <pubDate>Fri, 15 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-15-distribute-macos-app-2-sparkle-signing-key/</guid>
      <description>Implementing automatic updates with the Sparkle framework is the de facto standard for directly distributed macOS apps. Using the example app FocusTimer, this article explains step by step how to generate the EdDSA signing key that Sparkle uses to verify update files, embed the public key in the app, and safely back up and restore the private key.</description>
    </item>
    <item>
      <title>Distributing a macOS App Yourself (1): Developer ID Certificate and Notarization Setup</title>
      <link>https://hobbyworker.me/en/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</link>
      <pubDate>Thu, 14 May 2026 00:00:00 +0000</pubDate>
      <guid>https://hobbyworker.me/en/dev/2026-05-14-distribute-macos-app-1-developer-id-certificate/</guid>
      <description>To distribute a macOS app directly without going through the Mac App Store, you first need a Developer ID certificate and a notarization setup. Using the example app FocusTimer, this article walks through the one-time setup you only need to do once: installing command-line tools, issuing a Developer ID Application certificate, and registering an app-specific password and a notarytool profile for notarization.</description>
    </item>
  </channel>
</rss>
