Can I check programmatically to see if a window is open?

I’m working on an extension that acts as an updater for other extensions. Currently I’m implementing “Download and Install” by using os.execute to open the downloaded *.aseprite-extension file in Aseprite. This comes with some caveats:

  • My extension’s main Dialog must be closed before the built-in Aseprite extension installation warning/dialog appears
  • I’d like to re-run my extension once the user has installed/cancelled the update, but…
  • Calling my main function again (or using app.command to call my extension again) tramples over the install dialog and prevents it from appearing

Is there a way I can check that Aseprite is done showing any other dialogs before I try running my extension again?

The idea is: check for updates > click download + install button > close dialog so native install dialog can show up > check for updates again to confirm / update other extensions.

Alternatively (per this GitHub issue), is there any way at all to install extensions from *.aseprite-extension files via the API? I found some mentions of installCompressedExtension in extensions.cpp, but that’s not exposed to the Lua API.