AppInstaller // Reorganize applicationDidFinishLaunching().

This commit is contained in:
ShikiSuen 2022-10-12 10:09:10 +08:00
parent 454b9bb228
commit 860dd68558
1 changed files with 16 additions and 32 deletions

View File

@ -44,7 +44,6 @@ class AppDelegate: NSWindowController, NSApplicationDelegate {
@IBOutlet var appEULAContent: NSTextView! @IBOutlet var appEULAContent: NSTextView!
var installingVersion = "" var installingVersion = ""
var upgrading = false
var translocationRemovalStartTime: Date? var translocationRemovalStartTime: Date?
var currentVersionNumber: Int = 0 var currentVersionNumber: Int = 0
@ -70,59 +69,44 @@ class AppDelegate: NSWindowController, NSApplicationDelegate {
func applicationDidFinishLaunching(_: Notification) { func applicationDidFinishLaunching(_: Notification) {
guard guard
let installingVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String]
as? String,
let window = window, let window = window,
let versionString = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String let cell = installButton.cell as? NSButtonCell,
let installingVersion = Bundle.main.infoDictionary?[kCFBundleVersionKey as String] as? String,
let versionString = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String,
let copyrightLabel = Bundle.main.localizedInfoDictionary?["NSHumanReadableCopyright"] as? String,
let eulaContent = Bundle.main.localizedInfoDictionary?["CFEULAContent"] as? String,
let eulaContentUpstream = Bundle.main.infoDictionary?["CFUpstreamEULAContent"] as? String
else { else {
NSSound.beep()
NSLog("The vChewing App Installer failed its initial guard-let process on appDidFinishLaunching().")
return return
} }
self.installingVersion = installingVersion self.installingVersion = installingVersion
cancelButton.nextKeyView = installButton cancelButton.nextKeyView = installButton
installButton.nextKeyView = cancelButton installButton.nextKeyView = cancelButton
if let cell = installButton.cell as? NSButtonCell { window.defaultButtonCell = cell
window.defaultButtonCell = cell appCopyrightLabel.stringValue = copyrightLabel
} appEULAContent.string = eulaContent + "\n" + eulaContentUpstream
if let copyrightLabel = Bundle.main.localizedInfoDictionary?["NSHumanReadableCopyright"]
as? String
{
appCopyrightLabel.stringValue = copyrightLabel
}
if let eulaContent = Bundle.main.localizedInfoDictionary?["CFEULAContent"] as? String,
let eulaContentUpstream = Bundle.main.infoDictionary?["CFUpstreamEULAContent"] as? String
{
appEULAContent.string = eulaContent + "\n" + eulaContentUpstream
}
appVersionLabel.stringValue = "\(versionString) Build \(installingVersion)" appVersionLabel.stringValue = "\(versionString) Build \(installingVersion)"
window.title = "\(window.title) (v\(versionString), Build \(installingVersion))" window.title = "\(window.title) (v\(versionString), Build \(installingVersion))"
window.standardWindowButton(.closeButton)?.isHidden = true window.standardWindowButton(.closeButton)?.isHidden = true
window.standardWindowButton(.miniaturizeButton)?.isHidden = true window.standardWindowButton(.miniaturizeButton)?.isHidden = true
window.standardWindowButton(.zoomButton)?.isHidden = true window.standardWindowButton(.zoomButton)?.isHidden = true
window.titlebarAppearsTransparent = true window.titlebarAppearsTransparent = true
if FileManager.default.fileExists( if FileManager.default.fileExists(atPath: kTargetPartialPath) {
atPath: kTargetPartialPath)
{
let currentBundle = Bundle(path: kTargetPartialPath) let currentBundle = Bundle(path: kTargetPartialPath)
let shortVersion = let shortVersion = currentBundle?.infoDictionary?["CFBundleShortVersionString"] as? String
currentBundle?.infoDictionary?["CFBundleShortVersionString"] as? String let currentVersion = currentBundle?.infoDictionary?[kCFBundleVersionKey as String] as? String
let currentVersion =
currentBundle?.infoDictionary?[kCFBundleVersionKey as String] as? String
currentVersionNumber = (currentVersion as NSString?)?.integerValue ?? 0 currentVersionNumber = (currentVersion as NSString?)?.integerValue ?? 0
if shortVersion != nil, let currentVersion = currentVersion, if shortVersion != nil, let currentVersion = currentVersion,
currentVersion.compare(installingVersion, options: .numeric) == .orderedAscending currentVersion.compare(installingVersion, options: .numeric) == .orderedAscending
{ {
upgrading = true // Upgrading confirmed.
installButton.title = NSLocalizedString("Upgrade", comment: "")
} }
} }
if upgrading {
installButton.title = NSLocalizedString("Upgrade", comment: "")
}
window.center() window.center()
window.orderFront(self) window.orderFront(self)
NSApp.activate(ignoringOtherApps: true) NSApp.activate(ignoringOtherApps: true)