microsoft / WSL-DistroLauncher

Sample/reference launcher app for WSL distro Microsoft Store packages.
MIT License
1.69k stars 521 forks source link

Provide a generic distribution Lancher/installer with Windows. #27

Open oiaohm opened 6 years ago

oiaohm commented 6 years ago

The reality idea here has main fails.

1) Linux distribution build servers not run Windows. So don't run MSVC compiler. The compilers had to choose between was llvm clang with windows support or mingw both you will find on Linux.

2) there are hundreds of Linux Distributions you don't want each one installing there own exes if you can avoid it.

3) security issues. WSL does not contain lets check if the tar.gz has a valid signature. Also you have not allowed that the Launcher really need to be able to go to a URL and check if the file the person is attempt to install is current and if it not current download a new tar.gz. WSL does not contain method to register distribution update command.

So really WSL core functions need added 1) function for add under distribution name the pgp release key. This release key used to check tar.gz files if they are valid or not. 2) function to register update commands and package status commands for a distribution. 3) function to access and used registered update and package status commands. 4) function to list all installed distributions. This will be useful latter.

WSL need the following command line commands. 1) WSLKey [distribution] [release key] to add release keys 2) WSLinstal -d [distribution name override optional] [distribution.tar.gz] 3) WSLRun [distribution] [Linux command] This one can possible have a few options. 4) WSLUninstall [distribution name] removes distribution including its release key. 5) WSLList This is simple list installed distributions. 6) WSLupdate [distribution]
This would provide enough that generic installers like NSIS could be used.

WSL need graphical in the form of a program either intergrated with windows update or its own thing to check that all installs distributions are upto date and update as directed. Also a generic WSL graphical install could have list of approved distributions with URL where it will go and get current release key and current tar.gz

Finally the tar.gz of the distribution could have a WSL directory added contain all icons and a setup.ini file list everything that need to be executed before install and before uninstall This can also include registering in start menu.

At the end of this Linux Distributions should not need to be building any windows .exe files or dealing with the Microsoft Store also would have reduced security risk. The idea of each distribution roll their own installer is just asking for coding defects and security issues on Windows.

MikeGitb commented 6 years ago

The launcher is a windows program, so I don't know why you expect it to be anything than a windows.exe.

But I very much like the Idea of having a GUI to manage the different distributions.

benhillis commented 6 years ago

@oiaohm - Fair points, and we appreciate the feedback. I agree that a design where distributions do not need to write any Windows code would be ideal. It's something we've talked about internally but would need support from other Windows components (primarily the Microsoft Store).

oiaohm commented 6 years ago

https://docs.microsoft.com/en-us/windows/wsl/wsl-config

DarthSpock there is a issue here. wsl.exe only allows you to execute on currently set default distribution when you are installing you don't want to change a users default distribution.

maybe add to wsl.exe . wsl.exe -d [distribution] so that you can execute a command on distribution that is not default.

https://msdn.microsoft.com/en-us/library/windows/desktop/mt826875(v=vs.85).aspx

I was looking here. So there is a method by wslconfig.exe to get list of currently installed distributions just you have not providing a function in the Wslapi.dll that would be kind of useful so install can know if there is going to be a straight up conflict or on a case person needs to install more than 1 copy. Same way with containers where we might have multi containers of the same distribution with conflicting package sets.

I do believe that's the purpose of apt, rpm, yum, etc. are for. While it would be nice for some way to just update packages for all installed distros at once, the amount of work needed to get that working just isn't worth it. You want updates automatically? Create a background task in Task Scheduler, availability of which will be in 1803.

Something to be aware be it apt, rpm, yum... The auto background update on Linux does not always update everything on Linux. Items like needrestart on Linux check containers to make sure their up-to date and report back if a container is not updated and is in need of manual assistance. You get package conflicts under Linux that you have to address manually at times.\

So the problem here even registering on Task Scheduler you are going to have distributions running on windows that windows users don't know are out of date.

KDE distributions flat out refusing wsl at this time makes absolute sense you cannot start up a linux graphical environment cleanly yet.

Side loading having to make a binary makes side loading way harder than it should be.

I know Microsoft Store wants customers. But if you want Linux distributions demanding they deal with Microsoft Store is going stop most of them. So we are going to see a lot of one off .exe files made by random parties side loading on windows. Say hell to security nightmare. All the Microsoft Store so called security is going to be avoided. How long before we have Linux distribution installers for side load with integrated malware. Lets try to cut this thousands of random developers making their own custom versions exes as solo developer with no support with no auditing before they do it.

oiaohm commented 6 years ago

Any package conflicts are usually the result of a user adding a ppa.

There are two common causes of conflicts in debian/ubuntu/deb based distributions. 1 is third party repositories like PPA at times the other is mainline deprecated package.

I run Linux distributions without third party repositories a lot. You see the following message on deb based distributions The following packages have been kept back: This message appears with or without PPA/third part repostories installed. Its normally that there is some no longer maintained program/library installed that has been superseded. So you get a growing collection of applications under message that are not being updated. The fact that is is the nature of Linux Distributions to-do this you cannot depend on auto back ground service to always update everything.

Snap as I'm sure you know, is distro agnostic for packages installed using it.

Flatpak boarder supported by Linux distribution than Snap.

Kali not getting along with anti-virus software is nothing new. Running Linux anti-viruses over Kali and it has packages those hate as well. Some places hosting on Linux with docker images do run A/V with heuristic scanning on the file systems yes people attempting to put Kali on those servers runs into trouble as well.

For development more than 1 version of a Linux distribution is not just nice to have its required. With debian you have combinations of packages that conflit with each other. same with Ubuntu. As you said third party repositories and if you are wishing to test against more than 1 of these combinations you need more than 1 copy.

https://en.wikipedia.org/wiki/Linux_distribution#/media/File:Linux_Distribution_Timeline.svg

Notice the huge tree under debian there. Then go look at docker and you will notice another huge tree. What happens when parties customise they minor fork. So the nature of Linux is forking.