On Saturday, 28 November 2015 at 14:05:37 UTC, Jacob Carlborg
wrote:
If you can't/don't want to go with the App Store then why not
the second option?
I'm coding an antivirus application for the Mac, using a
third-party antivirus engine, in Qt/C++. It needs some things to
run under high privileges. As far as I know, you can't do that
with a DMG package, but can do it with a PKG package.
I've learned a tremendous amount about PKG packages (the docs are
difficult), but the one thing that doesn't seem possible is to
download a component from a remote URL with it except via a Perl
or Bash script. The PKG flat format supports a way to call a
preinstall and postinstall Perl or Bash script. The trouble with
that technique, however, is that if you have a 30MB download that
takes awhile, the installer screen sits at "Running Package
Scripts..." for like 3 minutes (on 2Mbps DSL) and this can
confuse the consumer into thinking the installer is hung up, when
it isn't.
The thing I'd like to achieve with D is to have my Bash or Perl
script call a command line D application that finds the current
installer window x,y, hides the Cocoa-based window, draws my new
Cocoa-based window to replace it at the same x,y,w,h as the other
one, and then runs curl command to download the file, then uses
the D application again to stop showing my custom window, unhide
the installer window, and exit the Bash script.
So, some things I need to learn in D:
* How to enumerate the currently visible Cocoa windows and their
titles or internal names, along with their window handle.
* How to get the x,y of an existing Cocoa window by its window
handle.
* How to hide a Cocoa window by its window handle.
* How to draw my own Cocoa window at an x,y coordinate.
* How to destroy my Cocoa window by its window handle.
* How to unhide a previously hidden Cocoa window by its window
handle.
If I could pull this off -- I'd make a really nice OSX installer
because I could have a small pkg file that downloads and runs,
and then its window gets hidden and shows a more-user friendly
window (drawn in D and Cocoa) to let the consumer know it's
downloading a larger file, and then show the conclusion when
done. Currently nothing like that exists on OSX, but does exist
on Windows via the Inno Setup and InstallShield platforms.