Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
BUILD_DIR=build
PKG_ROOT=$BUILD_DIR/pkg-root
PACKAGING_DIR=packaging
APP_PATH="$PKG_ROOT/Applications/Utilities/BootstrapMate.app"
APP_PATH="$PKG_ROOT/Applications/Utilities/Managed Bootstrap Install.app"

# Create app bundle
mkdir -p "$APP_PATH/Contents/MacOS"
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
PACKAGING_DIR=packaging
SWIFT_REL=.build/apple/Products/Release
ACTOOL_OUT="$BUILD_DIR/actool-out"
APP="$PKG_ROOT/Applications/Utilities/BootstrapMate.app"
APP="$PKG_ROOT/Applications/Utilities/Managed Bootstrap Install.app"
APP_MACOS="$APP/Contents/MacOS"
APP_RES="$APP/Contents/Resources"
APP_HELPER_LD="$APP/Contents/Library/LaunchDaemons"
Expand Down
38 changes: 19 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ BINARY_NAME = managedbootstrapinstall
GUI_BINARY_NAME = BootstrapMateGUI
HELPER_BINARY_NAME = BootstrapMateHelper
BINARY_INSTALL_PATH = usr/local/bootstrapmate
APP_BUNDLE_PATH = Applications/Utilities/BootstrapMate.app
APP_BUNDLE_PATH = Applications/Utilities/Managed Bootstrap Install.app
APP_MACOS_DIR = $(PKG_ROOT)/$(APP_BUNDLE_PATH)/Contents/MacOS
APP_RESOURCES_DIR = $(PKG_ROOT)/$(APP_BUNDLE_PATH)/Contents/Resources
APP_HELPER_LD_DIR = $(PKG_ROOT)/$(APP_BUNDLE_PATH)/Contents/Library/LaunchDaemons
Expand Down Expand Up @@ -126,7 +126,7 @@ swift-build:

copy-binary: swift-build
@echo "$(BLUE)Signing and copying binaries to app bundle...$(NC)"
@mkdir -p $(APP_MACOS_DIR)
@mkdir -p "$(APP_MACOS_DIR)"

# Sign the CLI binary with hardened runtime before packaging
@codesign --force --sign "$(SIGNING_IDENTITY_APP)" \
Expand All @@ -150,12 +150,12 @@ copy-binary: swift-build
$(SWIFT_HELPER_BINARY)

# Copy all binaries to app bundle MacOS directory
@cp $(SWIFT_BINARY) $(APP_MACOS_DIR)/$(BINARY_NAME)
@chmod 755 $(APP_MACOS_DIR)/$(BINARY_NAME)
@cp $(SWIFT_GUI_BINARY) $(APP_MACOS_DIR)/$(GUI_BINARY_NAME)
@chmod 755 $(APP_MACOS_DIR)/$(GUI_BINARY_NAME)
@cp $(SWIFT_HELPER_BINARY) $(APP_MACOS_DIR)/$(HELPER_BINARY_NAME)
@chmod 755 $(APP_MACOS_DIR)/$(HELPER_BINARY_NAME)
@cp $(SWIFT_BINARY) "$(APP_MACOS_DIR)/$(BINARY_NAME)"
@chmod 755 "$(APP_MACOS_DIR)/$(BINARY_NAME)"
@cp $(SWIFT_GUI_BINARY) "$(APP_MACOS_DIR)/$(GUI_BINARY_NAME)"
@chmod 755 "$(APP_MACOS_DIR)/$(GUI_BINARY_NAME)"
@cp $(SWIFT_HELPER_BINARY) "$(APP_MACOS_DIR)/$(HELPER_BINARY_NAME)"
@chmod 755 "$(APP_MACOS_DIR)/$(HELPER_BINARY_NAME)"

# Create placeholder for symlink directory
@mkdir -p $(PKG_ROOT)/$(BINARY_INSTALL_PATH)
Expand All @@ -177,29 +177,29 @@ compile-icon:

create-app-bundle: copy-binary compile-icon
@echo "$(BLUE)Creating app bundle...$(NC)"
@mkdir -p $(APP_RESOURCES_DIR)
@rm -rf $(APP_RESOURCES_DIR)/*
@mkdir -p "$(APP_RESOURCES_DIR)"
@rm -rf "$(APP_RESOURCES_DIR)"/*

# Copy Info.plist template and substitute version placeholders
@sed -e 's/{{MARKETING_VERSION}}/$(MARKETING_VERSION)/g' \
-e 's/{{BUILD_NUMBER}}/$(BUILD_NUMBER)/g' \
$(PACKAGING_DIR)/resources/Info.plist.template > $(PKG_ROOT)/$(APP_BUNDLE_PATH)/Contents/Info.plist
$(PACKAGING_DIR)/resources/Info.plist.template > "$(PKG_ROOT)/$(APP_BUNDLE_PATH)/Contents/Info.plist"

# Copy compiled Assets.car (contains Liquid Glass icon for macOS 26+)
@cp $(ACTOOL_OUT)/Assets.car $(APP_RESOURCES_DIR)/Assets.car
@cp $(ACTOOL_OUT)/Assets.car "$(APP_RESOURCES_DIR)/Assets.car"

# Copy .icns fallback (macOS 13–25) - composited by actool, not a raw layer PNG
@cp $(ACTOOL_OUT)/$(ICON_NAME).icns $(APP_RESOURCES_DIR)/$(ICON_NAME).icns
@cp $(ACTOOL_OUT)/$(ICON_NAME).icns "$(APP_RESOURCES_DIR)/$(ICON_NAME).icns"

@echo "$(GREEN)✓ App bundle created$(NC)"

create-launchdaemon: create-app-bundle
@echo "$(BLUE)Copying LaunchDaemon plists...$(NC)"
@mkdir -p $(PKG_ROOT)/Library/LaunchDaemons
@mkdir -p $(SCRIPTS_DIR)
@mkdir -p $(APP_HELPER_LD_DIR)
@mkdir -p "$(APP_HELPER_LD_DIR)"
@cp $(PACKAGING_DIR)/LaunchDaemons/com.github.bootstrapmate.plist $(PKG_ROOT)/Library/LaunchDaemons/
@cp $(PACKAGING_DIR)/LaunchDaemons/com.github.bootstrapmate.helper.plist $(APP_HELPER_LD_DIR)/
@cp $(PACKAGING_DIR)/LaunchDaemons/com.github.bootstrapmate.helper.plist "$(APP_HELPER_LD_DIR)/"
@cp $(PACKAGING_DIR)/scripts/postinstall $(SCRIPTS_DIR)/
@chmod +x $(SCRIPTS_DIR)/postinstall
@echo "$(GREEN)✓ LaunchDaemon plists and scripts copied$(NC)"
Expand All @@ -210,7 +210,7 @@ sign-app: create-launchdaemon
--options runtime \
--timestamp \
--deep \
$(PKG_ROOT)/$(APP_BUNDLE_PATH)
"$(PKG_ROOT)/$(APP_BUNDLE_PATH)"
@echo "$(GREEN)✓ App bundle signed$(NC)"

build-pkg: sign-app
Expand Down
4 changes: 2 additions & 2 deletions Sources/app/Views/RunView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ struct RunView: View {
Button {
startRun()
} label: {
Label("Run BootstrapMate", systemImage: "play.fill")
Label("Run Managed Bootstrap Install", systemImage: "play.fill")
}
.buttonStyle(.glassProminent)
.tint(.green)
Expand All @@ -77,7 +77,7 @@ struct RunView: View {
Button {
startRun()
} label: {
Label("Run BootstrapMate", systemImage: "play.fill")
Label("Run Managed Bootstrap Install", systemImage: "play.fill")
}
.controlSize(.large)
.disabled(xpcClient.helperStatus != .registered)
Expand Down
2 changes: 1 addition & 1 deletion Sources/app/Views/SettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ struct SettingsView: View {
.aspectRatio(contentMode: .fit)
.frame(width: 72, height: 72)

Text("BootstrapMate")
Text("Managed Bootstrap Install")
.font(.largeTitle.bold())

Text("Enterprise management tools provisioning for automated device setup using manifests.")
Expand Down
2 changes: 1 addition & 1 deletion Sources/core/Utilities/BootstrapMateConstants.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import Foundation

public enum BootstrapMateConstants {
public static let daemonIdentifier = "com.github.bootstrapmate"
public static let executablePath = "/Applications/Utilities/BootstrapMate.app/Contents/MacOS/managedbootstrapinstall"
public static let executablePath = "/Applications/Utilities/Managed Bootstrap Install.app/Contents/MacOS/managedbootstrapinstall"
public static let helperBundleID = "com.github.bootstrapmate.helper"
public static let helperPlistName = "com.github.bootstrapmate.helper.plist"
public static let defaultRetryCount = 3
Expand Down
2 changes: 1 addition & 1 deletion packaging/LaunchDaemons/com.github.bootstrapmate.plist
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
<string>com.github.bootstrapmate</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Utilities/BootstrapMate.app/Contents/MacOS/managedbootstrapinstall</string>
<string>/Applications/Utilities/Managed Bootstrap Install.app/Contents/MacOS/managedbootstrapinstall</string>
</array>
<key>RunAtLoad</key>
<true/>
Expand Down
4 changes: 3 additions & 1 deletion packaging/resources/Info.plist.template
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
<key>CFBundleIdentifier</key>
<string>com.github.bootstrapmate</string>
<key>CFBundleName</key>
<string>BootstrapMate</string>
<string>Managed Bootstrap Install</string>
<key>CFBundleDisplayName</key>
<string>Managed Bootstrap Install</string>
<key>CFBundleIconFile</key>
<string>BootstrapMate</string>
<key>CFBundleIconName</key>
Expand Down
12 changes: 10 additions & 2 deletions packaging/scripts/postinstall
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ log() {

log "=== BootstrapMate postinstall started ==="

APP_PATH="/Applications/Utilities/BootstrapMate.app"
APP_PATH="/Applications/Utilities/Managed Bootstrap Install.app"
LEGACY_APP_PATH="/Applications/Utilities/BootstrapMate.app"
BINARY_PATH="${APP_PATH}/Contents/MacOS/managedbootstrapinstall"
SYMLINK_DIR="/usr/local/bootstrapmate"
SYMLINK_PATH="${SYMLINK_DIR}/managedbootstrapinstall"
Expand All @@ -24,6 +25,13 @@ CACHE_DIR="${MANAGED_DIR}/cache"

log "Creating directories..."

# Remove the pre-rename app bundle: the payload no longer covers the old path,
# so an upgrade would otherwise leave both apps in /Applications/Utilities
if [[ -d "${LEGACY_APP_PATH}" ]]; then
rm -rf "${LEGACY_APP_PATH}"
log "Removed legacy app bundle: ${LEGACY_APP_PATH}"
fi

# Create Managed Bootstrap directories FIRST (before daemon can start)
mkdir -p "${LOG_DIR}"
chmod 755 "${LOG_DIR}"
Expand All @@ -37,7 +45,7 @@ if [[ -x "${BINARY_PATH}" ]]; then
log "Binary found: ${BINARY_PATH}"

# Get binary info
log "Binary architecture: $(file ${BINARY_PATH})"
log "Binary architecture: $(file "${BINARY_PATH}")"

# Create symlink directory and symlink
rm -f "${SYMLINK_DIR}/.placeholder" 2>/dev/null || true
Expand Down
Loading