keymanapp / keyman

Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
https://keyman.com/
Other
387 stars 107 forks source link

feat(developer): add user interface to compile bundled installers for Windows #12136

Open dyacob opened 1 month ago

dyacob commented 1 month ago

Is your feature request related to a problem? Please describe.

Building a distributable keyman desktop installer with keyboards packages bundled in requires the installation and setup of a separate package, kmc, which in turn must be run outside of KMD at the command line requiring a small learning curve to understand and use the compiler parameters.

This presents a new workflow for KMD developers who had previously been accustomed to preparing the installer executables from within KMD. Restoring the capability to build installers from with KMD is the focus of this request and is made for the benefit of developer productivity and ease of use.

Describe the solution you'd like

On the KMD package interface (for KPS files), on the Builder interface a subsection would be added for setting the parameters for building the exe. Interface components would be provided for setting each parameter that kmc supports.

For developer convenience (which this is all about), the keymandesktop.msi would be bundled with KMD and would not need to be downloaded separately. The keymandesktop.msi would not be selected and set through the UI, this aspect would be hidden from the user and simply corresponds the current version of KMN in use.

Describe alternatives you've considered

kmc at the command line. works well but has the standard disadvantages for working at the command line vs a user-friendly interface.

Related issues

No response

Keyman apps

Keyman version

17.0.328

Operating system

Windows 11 Pro (22621.1702)

Device

Windows Laptop

Target application

N/A

Browser

N/A

Keyboard name

Any

Keyboard version

Any

Language name

Any

Additional context

No response

mcdurdin commented 1 month ago

Thanks for the feature request!

I've listed this as a potential future feature, because:

  1. We don't have support for cross-platform bundled installers, which reduces priority for this
  2. It's not our recommended method of distribution -- we recommend distribution through Keyman Cloud which is the simplest pattern for any online single user, or unbundled distribution for network deployments using Group Policy etc. An installer with the name keyman-setup.<package>.<bcp47>.exe will automatically download the package from Keyman Cloud (e.g. keyman-setup.khmer_angkor.km.exe). See https://help.keyman.com/knowledge-base/?id=35 for more details.
  3. Bundled installers are usually not signed, which introduces malware risk, reduces trust
  4. Bundled installers usually end up with out of date Keyman versions, which means that the typical use case involves downloading the latest Keyman version again anyway
  5. It is advanced functionality that would be used by only a small proportion of our keyboard authors

Addressing all these limitations is a significant amount of work, and it's not a pathway we want to encourage anyway :grin: