Hey, Munir –
If you are installing the app through the GUI (dashboard), only apps that are compatible with your home are shown as valid installation options. This check is done by the platform and you can
trace it in GuiService.cs, which contains the functions that are called the GUI.
Installation of an app is in InstallAppWeb function in GuiService.cs. You will notice that it basically does two things:
Start the module corresponding the app.
This function in turn will download the binaries if they don’t already exist on the hub. That would be the case where you are running HomeOS on a machine other than your build machine.
Insert an entry into Modules.xml configuration file in output/Configs/Config
It is step (ii) basically that gives HomeOS memory of which apps are installed. These apps will run again when the Platform is restarted. Apps that are not installed are not run even if
their binaries are present in the output folder.
Apps run as modules in HomeOS and host UI services using WCF (windows communication framework), which you can think of as a lightweight webserver. They host two services:
A service that serves static UI content (HTML).
A service that implements the JS calls inside the HTML files.
The UI is essentially directly talking to the app, except that through the magic of WCF we make sure that the caller is authenticated for JS calls.
I hope this helps. Let me know if something is still not clear.