All Projects → syedhassaanahmed → kiosk-demo-electron

syedhassaanahmed / kiosk-demo-electron

Licence: MIT license
Package and distribute Electron Apps and run them in Kiosk mode on Windows 10

Programming Languages

powershell
5483 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
Dockerfile
14818 projects
CSS
56736 projects

Projects that are alternatives of or similar to kiosk-demo-electron

Winetricks
Winetricks is an easy way to work around problems in Wine
Stars: ✭ 1,786 (+2526.47%)
Mutual labels:  winehq, winetricks
emacs-msi-installer
A (hopefully) better installation experince for GNU Emacs on Windows
Stars: ✭ 40 (-41.18%)
Mutual labels:  msi, wix-toolset
Photoshopcclinux
Photoshop CC v19 installer for Gnu/Linux
Stars: ✭ 2,894 (+4155.88%)
Mutual labels:  winehq, winetricks
cargo-wix
A cargo subcommand to build Windows installers for rust projects using the WiX Toolset
Stars: ✭ 142 (+108.82%)
Mutual labels:  msi, wix-toolset
iswix
Industrial Strength Windows Installer XML Application
Stars: ✭ 75 (+10.29%)
Mutual labels:  msi, wix-toolset
awesome-gnu-linux-gaming
A curated list of awesome GNU/Linux tips & tricks, games, tools, and resources - Mirrored from: https://gitlab.com/linuxcafefederation/awesome-gnu-linux-gaming.git
Stars: ✭ 135 (+98.53%)
Mutual labels:  winehq, winetricks
SophiApp
⚡ The most powerful open source tweaker on GitHub for fine-tuning Windows 10 & Windows 11
Stars: ✭ 1,859 (+2633.82%)
Mutual labels:  windows-10
Scambaiting-Setup
A full setup guide for scam-baiting with Oracle's VirtualBox.
Stars: ✭ 232 (+241.18%)
Mutual labels:  windows-10
XamlIslands
Repository with several XAML Islands v1 samples (Win32, WPF, and WinForms) to demonstrate how to use it.
Stars: ✭ 47 (-30.88%)
Mutual labels:  windows-10
docker-godot-export
Docker image to automatically export your Godot games.
Stars: ✭ 42 (-38.24%)
Mutual labels:  appveyor
Light-Switch
Easily switch from light to dark theme, or the other way around, in Windows 10/11.
Stars: ✭ 25 (-63.24%)
Mutual labels:  windows-10
Queries
SQLite queries
Stars: ✭ 57 (-16.18%)
Mutual labels:  windows-10
FakeGPS
[NOT MAINTAINED] FakeGPS driver for Windows
Stars: ✭ 85 (+25%)
Mutual labels:  windows-10
qvm-create-windows-qube
Spin up new Windows qubes quickly, effortlessly and securely on Qubes OS
Stars: ✭ 267 (+292.65%)
Mutual labels:  windows-10
wor-flasher
Legal utility that runs on RPiOS to flash another SD card with Windows 10/11
Stars: ✭ 451 (+563.24%)
Mutual labels:  windows-10
packer-windows
Windows Templates for Packer: Windows 11, Windows 10, Windows Server 2022, 2019, 2016, also with Docker
Stars: ✭ 1,116 (+1541.18%)
Mutual labels:  windows-10
prebuild-ci
Use CI to auto upload prebuilds
Stars: ✭ 17 (-75%)
Mutual labels:  appveyor
cibuildwheel
🎡 Build Python wheels for all the platforms on CI with minimal configuration.
Stars: ✭ 1,350 (+1885.29%)
Mutual labels:  appveyor
windows10
MS Windows 10 cheat-sheet
Stars: ✭ 13 (-80.88%)
Mutual labels:  windows-10
MediaFlyout
Windows 10+ Media Control Taskbar Flyout
Stars: ✭ 87 (+27.94%)
Mutual labels:  windows-10

kiosk-demo-electron

Build status

This repository demonstrates how to package and distribute an Electron App which runs in Kiosk mode on Windows 10. It uses the Windows 10 Shell Launcher as well as set the kiosk user to AutoLogon. Packaging the app as an MSI makes sure we can distribute it to multiple kiosks via an MDM solution e.g Microsoft Intune.

Note: Shell Launcher feature requires Windows 10 Enterprise Edition.

The project is described in-depth in this blog post

Create Installer

Windows

npm run dist will build everything and create the MSI in dist folder.

Linux

Use npm run dist:wine. Script assumes that Wine and dotnet40 (using winetricks) are installed and properly configured. If the full path of any of your electron-packager output files is longer than 128 chars, you'll run into error LGHT0103 : The system cannot find the file. Note: Light.exe has a known issue with MSI validation on Wine so it had to be turned off with -sval flag.

Docker

npm run dist:docker will spin up an instance of this image, execute the above wine script and then copy artifacts back to host's dist folder. Script assumes that Docker daemon is running on host.

Configure

Kiosk parameters are passed to the installer like this:

KioskDemoElectron.msi KIOSK_USERNAME=<kiosk user> KIOSK_PASSWORD=<kiosk password>

All params have a default value as can be seen in product.wxs.

How it works

  • First we package the app using electron-packager
  • Then we harvest binaries produced by electron-packager using WiX's Heat tool.
  • We also copy our PowerShell script into the root of electron-packager output. We could let the harvester take care of PowerShell files as well, but we wanted to explicitly specify them in product.wxs with Custom Actions.
  • Output of harvest tool is heat.wxs which contains a Fragment with list of files. We take that as well as product.wxs and pass it to the Candle tool. Candle is responsible for preprocessing .wxs files and generates compiled .wixobj files.
  • Finally we use the Light tool to generate MSI from .wixobj.
  • PowerShell Scripts are executed from WiX Custom Actions.

Why WiX instead of electron-winstaller (Squirrel.Windows)?

In our case, WiX provides lot of flexibility in terms of configuring the installer;

  • Passing params to the setup
  • Executing elevated PowerShell during install/uninstall events
  • Modifying config files based on setup params

Troubleshoot

MSI logging can be enabled by executing the installer like this:

msiexec /i "setup.msi" /l*v "msi.log" PARAM=VALUE

PowerShell log will be written in C:\Windows\SysWOW64\powershell.log.

Telemetry

The solution uses Application Insights to collect basic telemetry data from the app. To enable it, please create an environment variable named APPINSIGHTS_INSTRUMENTATIONKEY and set it to the Instrumentation Key obtained from Azure portal.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].