(no title)
jodoherty | 3 months ago
WinApps needs a Windows RDP server to work. Most of the functionality doesn't care where that Windows RDP server is actually running as long as its FreeRDP client can connect to it. The container or libvirt VM options are just ways to accomplish that via virtualization.
I imagine the container part makes it easier to automate QEMU virtualization using bash scripting without worrying about distribution specific differences in the environment. These kinds of scripts become fairly ossified to their environment. Making them run consistently on different Linux distributions is its own adventure unrelated to installing and running Windows, so the containerization eliminates the need for a lot more bash scripting to account for those differences.
The container's bash scripts download the Windows installer ISOs and run them in an unattended mode inside a QEMU VM. The unattended installation is configured to skip activation:
- https://github.com/dockur/windows/blob/c7aac1edcf37a69ff730d...
- https://github.com/dockur/windows/blob/c7aac1edcf37a69ff730d...
- https://github.com/dockur/windows/blob/c7aac1edcf37a69ff730d...
Once the container is running, WinApps configures RDP via some scripts and registry settings exposed into the container via a volume so the container's scripts can copy and run them in the Windows VM:
- https://github.com/winapps-org/winapps/blob/b4766336903d0cbe...
- https://github.com/winapps-org/winapps/blob/main/oem/RDPApps...
You can do it all yourself too with your own libvirt VM, but it's just more involved:
- https://github.com/winapps-org/winapps/blob/main/docs/libvir...
I haven't seen any of this before, but I think it's a pretty clever use of scripting and containers on top of some fairly mature but hard to use pieces of software.
No comments yet.