B4J Tutorial [Tool] WindowsStorePackager - publish your App to the Windows Store

In this tutorial, I want to show you, how you can upload your Java Application to Windows Store. Here you can find a test Application in the Store.

System requirements:
  • Windows 10 Anniversary Update (10.0.14393.0 and later) Pro or Enterprise edition
  • 64-bit processor
  • Hardware-assisted virtualization
  • OpenJDK 11 with Jmods - can be downloaded from b4x.com: https://www.b4x.com/b4j.html
Required Tools:
After you have installed all the necessary components you are ready to create the Appx package with the WindowsStorePackager tool.

Create the Appx package:
1. Open WindowsStorePackager as administrator
2. Fill in all necessary fields:
  • The AppName must be the same as the app name in in the developer dashboard
  • The Version must have the following format: X.X.X.X → e.g. 0.0.0.1
  • Like in the B4JPackager11 you have the option to explicit include or exclude modules, use a comma as seperator
  • the values for the last three fields can be found in the "App identity" section of your App:
    APPID.PNG
3. Now hit the "Create" button to finally generate your package.


That's it. Now go to the latest submission of your App and upload the appx package.

Feel free to ask questions ;)
 
Last edited:

Computersmith64

Well-Known Member
Licensed User
Longtime User
Hi,

you can send me a mail ([email protected]) or upload on Dropbox/Google Drive ... and send me the link via pm.

Jan
OK - I'll put it on Google Drive & send you a PM. I'm just running through the conversion process again to make sure it wasn't an anomaly & if it still doesn't work I'll get the files to you...

- Colin.
 

Computersmith64

Well-Known Member
Licensed User
Longtime User
So , could anyone uploaded a app to windows store ?
I got as far as the Windows AppConsult Engineer signing the app & testing it on Windows 2010 & Windows 10 S (Simulation) machines. It failed the tests on the Windows 10 S machines, so until I fix the issues they won't give me permissions to upload to the store.

- Colin.
 

tufanv

Expert
Licensed User
Longtime User
I got as far as the Windows AppConsult Engineer signing the app & testing it on Windows 2010 & Windows 10 S (Simulation) machines. It failed the tests on the Windows 10 S machines, so until I fix the issues they won't give me permissions to upload to the store.

- Colin.
Same happened to me now. The consultant created the appx for me she said the same , it crashes on windows 10 s these are the logs:

o File packager.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File runtime\bin\deploy.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File unins000.exe contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File unins000.exe contains a reference to a "Launch Process" related API shell32.dll!ShellExecuteA

o File unins000.exe contains a reference to a "Launch Process" related API shell32.dll!ShellExecuteExA

o File unins000.exe contains a reference to a "Launch Process" related API shell32.dll!ShellExecuteEx

o File runtime\bin\java.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File msvcr120.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File msvcr120.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File runtime\bin\jdwp.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File runtime\bin\plugin2\npjp2.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File runtime\bin\jli.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File runtime\bin\server\jvm.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File runtime\bin\msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File runtime\bin\msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File runtime\bin\plugin2\msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessA

o File runtime\bin\plugin2\msvcr100.dll contains a reference to a "Launch Process" related API kernel32.dll!CreateProcessW

o File msvcr100.dll contains a blocked executable reference to "cmd.exe".

o File msvcr120.dll contains a blocked executable reference to "cmd.exe".

o File unins000.exe contains a blocked executable reference to "cmd.exe".

o File unins000.exe contains a blocked executable reference to "REG".

o File unins000.exe contains a blocked executable reference to "cmd".

o File bitcoinV2.jar contains a blocked executable reference to "dnx".

o File bitcoinV2.jar contains a blocked executable reference to "CSi".

o File bitcoinV2.jar contains a blocked executable reference to "CDB".

o File bitcoinV2.jar contains a blocked executable reference to "Cmd".

o File api-ms-win-core-console-l1-1-0.dll contains a blocked executable reference to "DnX".

o File api-ms-win-core-handle-l1-1-0.dll contains a blocked executable reference to "DnX".

o File api-ms-win-crt-filesystem-l1-1-0.dll contains a blocked executable reference to "DnX".

o File api-ms-win-crt-heap-l1-1-0.dll contains a blocked executable reference to "DnX".

o File api-ms-win-crt-locale-l1-1-0.dll contains a blocked executable reference to "DnX".

o File api-ms-win-crt-stdio-l1-1-0.dll contains a blocked executable reference to "DnX".

o File concrt140.dll contains a blocked executable reference to "DnX".

o File deploy.dll contains a blocked executable reference to "cmd".

o File hprof.dll contains a blocked executable reference to "cmd".

o File jfxwebkit.dll contains a blocked executable reference to "CSi".

o File jfxwebkit.dll contains a blocked executable reference to "cdb".

o File jfxwebkit.dll contains a blocked executable reference to "CmD".

o File jfxwebkit.dll contains a blocked executable reference to "Reg".

o File sawindbg.dll contains a blocked executable reference to "Windbg".

o File ucrtbase.dll contains a blocked executable reference to "cmd.exe".

o File classes.jsa contains a blocked executable reference to "cmd".

o File classes.jsa contains a blocked executable reference to "reg".

o File jvm.dll contains a blocked executable reference to "csi".

o File jvm.dll contains a blocked executable reference to "cdb".

o File jvm.dll contains a blocked executable reference to "REG".

o File charsets.jar contains a blocked executable reference to "cMd".

o File javaws.jar contains a blocked executable reference to "cmd".

o File jce.jar contains a blocked executable reference to "reG".

o File resources.jar contains a blocked executable reference to "reg".

o File rt.jar contains a blocked executable reference to "cmd".

o File rt.jar contains a blocked executable reference to "reg".

o File rt.jar contains a blocked executable reference to "CMD.EXE".

o File PYCC.pf contains a blocked executable reference to "dNx".

o File cldrdata.jar contains a blocked executable reference to "CmD".

o File cldrdata.jar contains a blocked executable reference to "csI".

o File jfxrt.jar contains a blocked executable reference to "reg".

o File localedata.jar contains a blocked executable reference to "CDB".

o File localedata.jar contains a blocked executable reference to "CSI".

o File sunjce_provider.jar contains a blocked executable reference to "REG".


Please check the following and let me know if you have any questions:


  • Are you launching any process that is not a part of your app?
  • The Windows 10 S policies don’t allow to execute external processes even if the process is a Microsoft process like CMD.EXE, REG.EXE or REGEDIT.EXE.
  • Identify which of the flagged entries represent a call to launch an executable file that is not part of your app and remove those calls. If the flagged files are part of your application, you may ignore the warning.
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Hi,
Has Microsoft changed their process?
Yes indeed, it seems that Mircosoft changed something.
When I wrote the tutorial Windows 10 S wasn't a required plattform, however as you can see in the last posts, now it is. Windows 10 S seems to be more restrictive than the normal Windows 10, therefore the access of certain libraries by Java causes trouble.

First of all, it needs to be checked whether there is a chance to upload B4J/JavaFX Apps to the Store at all now. Moreover, if the result is positive this tutorial needs to be rewritten.

Currently I am updating the packager for Mac, which takes a bit more time than I thought. After that, I will start to recheck this whole process.

Have a nice weekend.

Jan
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Just an info: I've just submitted a App (Java 11 build) to the Windows Store. In an info box I explained why the App needs to run full trust. The App is in review now, let's see what happens ...

Off-Topic: "TinyPasswordGenerator" which was developed in less than 20 minutes was rated by a big German computer magazine: https://www.chip.de/downloads/Tiny-Password-Generator-Windows-10-App_124991155.html I think it demonstrates that the Windows store attracts more attention (at least in Germany) than you might think in the very first moment.
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Good news: My app is in the store (it just took 3 days) https://www.microsoft.com/store/apps/9MZH00NRC68J No problems with Windows 10 S.

I have developed a small tool to create the Appx package, so the whole creation process becomes a lot easier. The tutorial was already updated :)

Jan
 

trueboss323

Active Member
Licensed User
Longtime User
Thank you Jan. That really helps a lot! So I guess the run fulltrust permission is no longer required?
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Hi,
So I guess the run fulltrust permission is no longer required?
The fulltrust permission is still required. After you have uploaded you package you will receive a warning:
Package acceptance validation warning: The following restricted capabilities require approval before you can use them in your app: runFullTrust.
You are asked to explain why your App needs to run full trust, a simple answere like the following one should be fine:
This app is originally developed in JavaFX. I have used the DesktopBridgeConverter in order to create the Appx, therefore the runFullTrust permission is needed.

Jan
 

trueboss323

Active Member
Licensed User
Longtime User
What does it mean when it can't find a folder (JavaFXJmods). I tried several times downloading OpenJDK.
upload_2019-2-5_23-56-23.png
 

trueboss323

Active Member
Licensed User
Longtime User
Have you downloaded it from here: https://www.b4x.com/b4j.html ?

Thank you Erel, I was trying to download it from the official site which is why I couldnt get it to work.

@JanPRO
I think there is a problem with the Package/Identity/Name field. If I set the -PackageName option to the Package/Identity/Name given in the dashboard, the program stops with a write error for -PackageName.

But if I put -PackageName to the display name that I want, when I submit the appx file to the windows store I get: Invalid package identity name: and Invalid package family name:

My Pakage/Identity/name takes the form 12345MyApp.624C374D8B5. If I leave out the '624C374D8B5' and the period then the program completes its run. But of course when I try to submit the appx file to the windows store I the Invalid package identity name and Invalid package family name errors.
 
Last edited:

JanPRO

Well-Known Member
Licensed User
Longtime User
Hi,
My Pakage/Identity/name takes the form 1234MyApp.624C374D8B5
Is 624C374D8B5 a placeholder or really a number? The Pakage/Identity/Name normally has the following format: 4DigitNumberYourName.AppName

Jan
 
Last edited:

trueboss323

Active Member
Licensed User
Longtime User
Hi,

Is 624C374D8B5 a placeholder or really a number? The Pakage/Identity/Name normally has the following format: 4DigitNumber.YourName.AppName

Jan

Yes that is the actual number. And there is only one period in the package name, with 5 digits instead of 4 in the front. So the format is like 12345MyName.624C374D8B5
 

JanPRO

Well-Known Member
Licensed User
Longtime User
Update v. 1.0.1

In the case of Trueboss, WindowsStorePackager has created an invalid AppID (the AppID shouldn't contain numbers) based on the PackageName. I have created a new version 1.0.1, which uses the B4J package name as AppID (note that the AppID can be any string of your choice).

You can find the link to the new version in the start post (before you install the new version, remove the old one).

Jan
 

keirS

Well-Known Member
Licensed User
Longtime User
This suffers from the same issues as B4Jpackager11 had which Erel has fixed. See here for details. Is there anyway to solve these issues?
 
Top