BOINC / boinc

Open-source software for volunteer computing and grid computing.
https://boinc.berkeley.edu
GNU Lesser General Public License v3.0
1.98k stars 443 forks source link

Port Win client to UWP, put in MS app store #1804

Open davidpanderson opened 7 years ago

davidpanderson commented 7 years ago

MS is moving toward having users download apps only from their app store. Such apps must be built as Universal Windows Platform apps. This requires VS2015.

Info: https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root Rom thinks that CreateProcess() may be missing from UWP. However, see https://social.msdn.microsoft.com/Forums/en-US/537da783-f8af-4ce4-853e-d68bd97e2e88/uwpdesktop-bridgecreateprocess-not-working?forum=wpdevelop

AenBleidd commented 7 years ago

I've never work with UWP but I can try to do this task this summer

davidpanderson commented 7 years ago

Great. The hardest part is likely to be the installer. We do tricky stuff, like creating new users and groups. I UWP's installer features are likely to be much different from MSI.

adamradocz commented 7 years ago

I think it would be a good idea upgrade to VS2017 and skip the VS2015.

AenBleidd commented 7 years ago

@adamradocz This will require rebuilding 3rd party libs which are not stored on GitHub. This is possible I guess but should be made as a separate task.

adamradocz commented 7 years ago

Yes I know. :) I've tried to do it, but unfortunately my c++ skills wasn't enough to done the job. Should I create a new issue for that?

AenBleidd commented 7 years ago

Yes, please

AenBleidd commented 7 years ago

I made some investigations and I think that it is impossible to make UWP BOINC applications. First of all there is no possibility to run win32 applications from UWP applications. Also there is no possibility to run background tasks at least for our purposes because Background tasks has limitations: image So Manager application only can be written to control external boinc client. I think this has no reason to be done because we have Manager application already which can be used on Windows/Linux/MacOS and I think we need no additional Windows applications which will run on WIndows 10 only. So I propose to close this issue.

davidpanderson commented 7 years ago

If the Windows default is to allow only UWP apps from the MS app store to be installed, we'll have to deal with this issue. The UWP spec is fluid; we need to at least be able to tell MS what we want changed.

AenBleidd commented 7 years ago

UWP - is a sandbox. And there is no way to run boinc client. OK, even if we will find some way (I do not believe in this but anyway) there is no chance to let it work in background. Otherwise you will need to keep UWP Manager application opened. Why we need this app be in MS store? In any case boinc client cannot be UWP application so if we will put Manager application to MS store we will need to ask user to download and install separate boinc client outside of MS store. So again, why we need this applications in MS store? It will not work on Windows Phone (ok, Manager only can work, but not client) because of the restrictions for background tasks. I can create UWP BOINC Manager application because I'm interested in this technology but don't think that many BOINC users really need it.

JuhaSointusalo commented 7 years ago

So again, why we need this applications in MS store?

Microsoft has released Windows S on which you can install applications only from Windows Store. What kind of market share that version will have and if it's worth the effort to port BOINC to it is then a different question.

https://www.microsoft.com/en-us/windows/windows-10-s

AenBleidd commented 7 years ago

@JuhaSointusalo, ok but as I wrote before there is no way to run win32 process from UWP application so we can create Manager application only. And I do not think that it is so needful for device with no boinc client, In any case this is my opinion only and it could be completely wrong.

JuhaSointusalo commented 7 years ago

I haven't put in any real effort in seeing if BOINC could be ported to Windows Store other than if I have been looking for some other information and there has been a mention of Store I have taken a quick peek. The infos I have seen seem to contradict each other. Some texts seem to imply that you can't launch other applications from UWP apps but other texts seem to imply that it is possible to launch another application as long as both are from the same application package.

I'm getting the impression that Microsoft really wants developers to adopt Windows Store and is willing to make changes to Store's requirements to see that happen. If David has some connections to Microsoft it might be useful to compile a list of problematic restrictions from BOINC's point of view and see if that leads anywhere. BOINC might not be the only one to find some restriction problematic.

The background task limitations you mentioned earlier for instance sound really strange. Take some video editing software. From what I understand you usually edit videos in preview mode and when you are satisfied with the edits you let the software process the video in full quality. Now, while the software is processing the video you could read your emails or go surfing and let the video editing run in background. But if there is some hard limit in what background apps can do then it would make UWP version of such software much less useful.

davidpanderson commented 7 years ago

I don't currently have any useful contacts at Microsoft, but I can make phone calls and see what happens. It would be very helpful if someone could identify the problematic restrictions.

AenBleidd commented 7 years ago

Ok, I'll try to do deeper investigation.

AenBleidd commented 7 years ago

It seems that there is a way to launch win32 application (boinc client in our case): https://developer.microsoft.com/en-us/windows/iot/samples/externalprocesslauncher This method works for Windows 10 for IoT only. Continue investigation...

broncotc commented 7 years ago

If UWP is put into store (or at least as a side-loadable package) they it should be able to run on Xbox one platform (though is there any computing tasks using directcompute?) Desktop (Win32) bridge for uwp is also helpful.

Ageless93 commented 7 years ago

Interesting article on Windows 10 S and the reviewer's view on this for future desktop computers: http://www.zdnet.com/article/windows-10-s-is-the-future-but-not-the-present-of-the-desktop-pc/

Ageless93 commented 6 years ago

Windows 10 in S Mode coming soon to all editions of Windows 10

Starting with the next update to Windows 10, coming soon, customers can choose to buy a new Windows 10 Home or Windows 10 Pro PC with S mode enabled, and commercial customers will be able to deploy Windows 10 Enterprise with S mode enabled.

We expect the majority of customers to enjoy the benefits of Windows 10 in S mode. If a customer does want to switch out of S mode, they will be able to do so at no charge, regardless of edition.

CharlieFenton commented 6 years ago

Will S mode allow the BOINC client to download and run project applications?

Ageless93 commented 6 years ago

S Mode only allows app installations from the Windows Store and I doubt that those apps are allowed to do much downloading of their own, as, as Microsoft says it, this mode will actively help against the spread of malware and ransomware.

Ferroin commented 6 years ago

Unless I'm seriously misunderstanding the limited developer documentation I've seen, the BOINC client won't work at all as-is in S mode. A UWP app version designed to run in S mode would have to pre-load all the project applications as part of the app (and even then it's debatable whether or not it would work, as I have no idea how well any of the project applications will work without any access to the win32 API's).

AenBleidd commented 6 years ago

As far as I know there is no possibility to run executable. So I see no way for BOINC to work on Windows S.

Best regards, Vitalii

Sent via Android

чт, 8 марта 2018, 14:35 Austin S. Hemmelgarn notifications@github.com:

Unless I'm seriously misunderstanding the limited developer documentation I've seen, the BOINC client won't work at all as-is in S mode. A UWP app version designed to run in S mode would have to pre-load all the project applications as part of the app (and even then it's debatable whether or not it would work, as I have no idea how well any of the project applications will work without any access to the win32 API's).

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/BOINC/boinc/issues/1804#issuecomment-371474677, or mute the thread https://github.com/notifications/unsubscribe-auth/ADFZoYN_8GVPKDOOIxQItCDjMtBzfCS8ks5tcSWMgaJpZM4MUvZj .

AenBleidd commented 6 years ago

I found this article showing how to launch any executable from UWP application: https://stackoverflow.com/questions/49189353/uwp-how-to-start-an-exe-file-that-is-located-in-specific-directory But I'm not sure whether it will work on Win10 S because of this article: https://stefanwick.com/2018/04/06/uwp-with-desktop-extension-part-2/ It sad that on Windows 10 S only Microsoft-signed executable can be run from UWP application

AenBleidd commented 5 years ago

Any updates on this?

agowa commented 5 years ago

S mode in windows is designed around UWP, it has very hard limitations for native applications. But besides that for normal users having boinc in the windows stor at all may already help. And that shouldn't be that much of a problem. As also native applications can be shipped with it. All you need is to contact the Windows Store team and request permission for the native api (if it is not yet available publicly, heard something about this being subject to change last time I submitted an app there).

adamradocz commented 5 years ago

The BOINC packed with the project files couldn't be a viable option as discussed #1376 ?

AenBleidd commented 5 years ago

@adamradocz, @agowa338, as far as I know only Microsoft signed executables can be run from UWP application. I'm not sure it is possible to ask Windows Store team to assign couple dozens of applications that are developed by different people and organizations (because boinc is not responsible for all applications that are running using boinc infrastructure). So if there were some changes to these restrictions from Microsoft please let me know because I found no information beside that one I mentioned i one of my comments above

agowa commented 5 years ago

@adamradocz, @agowa338, as far as I know only Microsoft signed executables can be run from UWP application.

This is only true for S-Mode, not for generell. It's called Desktop Bridge (if the api is not open until now).

I'm not sure it is possible to ask Windows Store team to assign couple dozens of applications that are developed by different people and organizations (because boinc is not responsible for all applications that are running using boinc infrastructure).

If this is your concern, you would integrate an "app-service", as an api for other uwp apps to link against. But as mentioned above, it is only relevant for S-Mode.

So if there were some changes to these restrictions from Microsoft please let me know because I found no information beside that one I mentioned i one of my comments above

I don't know if there was a change, but I do know, that you can run native applications from UWP. Have a look at this project of mine: https://github.com/agowa338/WSL-DistroLauncher-Alpine As far as I know the Desktop Bridge API is open for everybody as well as most other restricted APIs, but you need to fill a short "letter of intent" to get the necessary permissions assigned.

https://docs.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root

AenBleidd commented 5 years ago

@agowa338, thanks for the links.

AenBleidd commented 5 years ago

FYI https://www.theverge.com/2019/5/30/18645609/microsofts-universal-windows-app-dead-microsoft-store-windows-store