Advice for planning our MSIX migration / Complex legacy application

%3CLINGO-SUB%20id%3D%22lingo-sub-1526868%22%20slang%3D%22en-US%22%3EAdvice%20for%20planning%20our%20MSIX%20migration%20%2F%20Complex%20legacy%20application%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1526868%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20folks%2C%3C%2FP%3E%3CP%3Ewe%20are%20planning%20to%20migrate%20our%20application%20to%20MSIX%20very%20soon%2C%20and%20at%20this%20point%20we%20have%20a%20couple%20of%20questions%20regarding%20the%20architecture%20of%20our%20future%20MSIX%20installer.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EFirst%2C%20some%20information%20about%20our%20application%20which%20we%20currently%20deploy%20via%20WIX%20%26amp%3B%20MSI%3A%3C%2FP%3E%3CP%3E-%20It%20is%20the%20client%20application%20of%20a%20Client%2FServer%20solution%3C%2FP%3E%3CP%3E-%20C%23%20WPF%20Main%20application%20and%20administrative%20console%20(currently%20migrating%20to%20.NET%20Core%203.1)%3C%2FP%3E%3CP%3E-%20Main%20application%20heavily%20relies%20on%20Plug-Ins%3C%2FP%3E%3CP%3E-%20C%2B%2B%20configuration%20application%3C%2FP%3E%3CP%3E-%20OpenJDK%20runtime%20for%20some%20JAR%20workloads%20we%20start%20from%20within%20the%20main%20application%3C%2FP%3E%3CP%3E-%20we%20register%20an%20own%20URL%20protocol%20handler%20in%20HKCU%2C%20which%20starts%20a%20small%20EXE%20which%20in%20turn%20starts%20our%20main%20app%3C%2FP%3E%3CP%3E-%20The%20main%20application%2C%20admin%20application%20and%20config%20application%20should%20be%20in%20the%20start%20menu%3C%2FP%3E%3CP%3E-%26nbsp%3BNot%20every%20user%20should%20have%20access%20to%20all%20applications%20(most%20only%20the%20main%20application).%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ENow%20some%20points%20we%20don't%20see%20very%20clearly%20at%20the%20moment%3A%3CBR%20%2F%3EQ1%3A%20When%20we%20package%20all%20application%20into%20one%20MSIX%20each%20independently%2C%20can%20the%20applications%20still%20start%20each%20other%20from%20within%20the%20code%3F%3C%2FP%3E%3CP%3EQ2%3A%20When%20we%20package%20all%20applications%20into%20one%20MSIX%2C%20can%20we%20%22turn%20off%22%20(hide%20from%20the%20start%20menu)%20applications%20a%20specific%20user%20should%20not%20be%20able%20to%20use%3F%3C%2FP%3E%3CP%3EQ3%3A%20Would%20it%20be%20better%20to%20package%20the%20admin%20and%20the%20config%20app%20as%20an%20optional%20package%20to%20the%20main%20application%20and%20if%20yes%2C%20can%20an%20optional%20package%20still%20have%20a%20start%20menu%20entry%3F%20(if%20I%20read%20this%20article%20right%2C%20I%20think%20the%20answer%20is%20'no'%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fwindows-dev-appconsult%2Fsupporting-a-modular-windows-application-with-msix-and-optional%2Fba-p%2F1124865%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fwindows-dev-appconsult%2Fsupporting-a-modular-windows-application-with-msix-and-optional%2Fba-p%2F1124865%3C%2FA%3E)%3C%2FP%3E%3CP%3EQ4%3A%20Our%20protocol%20handler%20command%20is%20registered%20to%20%22C%3A%5CProgram%20Files%5C...%5Courhandler.exe%22.%20How%20would%20that%20have%20to%20change%20in%20order%20to%20find%20the%20new%20install%20location%3F%3C%2FP%3E%3CP%3EQ5%3A%20When%20we%20package%20the%20OpenJDK%20as%20a%20depencendy%20with%20our%20main%20application%2C%20are%20we%20able%20to%20call%20it%20from%20there%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ESorry%20if%20these%20might%20be%20trivial%20questions%20for%20some%20of%20you%2C%20but%20we%20are%20just%20starting.%20Any%20help%20appreciated%2C%20also%20links%20to%20good%20further%20reading.%20We%20might%20just%20not%20have%20found%20the%20right%20spots%20in%20the%20MSIX%20Docs.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1529003%22%20slang%3D%22en-US%22%3ERe%3A%20Advice%20for%20planning%20our%20MSIX%20migration%20%2F%20Complex%20legacy%20application%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1529003%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F430868%22%20target%3D%22_blank%22%3E%40JoeHae365%3C%2FA%3E%26nbsp%3B%20You'll%20probably%20get%20a%20better%20answer%20from%20someone%20at%20Microsoft%2C%20but%20here%20are%20a%20few%20thoughts...%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ECurrently%2C%20Microsoft%20does%20not%20have%20a%20way%20for%20two%20%3CSTRIKE%3Eseparate%3C%2FSTRIKE%3E%20independent%20MSIX%20packages%20to%20work%20together%20in%20the%20same%20container%20that%20is%20similar%20to%20the%20App-V%20Connection%20Group%2C%20although%20there%20have%20been%20hints%20that%20there%20may%20someday%20be%20that%20support.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EMSIX%20does%20have%20the%20ability%20today%20for%20limited%20plug-in%20like%20packages%2C%20called%20dependent%20packages%20in%20some%20areas%20but%20known%20as%20Modification%20packages%20in%20the%20MSIX%20Packaging%20Tool.%26nbsp%3B%20These%20secondary%20packages%20cannot%20have%20shortcuts%2C%20so%20I'm%20not%20sure%20they%20work%20like%20you%20want.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ELooking%20at%20the%20documentation%20you%20pointed%20to%2C%20you%20could%20probably%20change%20your%20approach%20to%20meet%20your%20needs%2C%20by%20implementing%20a%20single%20shortcut%20for%20the%20end%20user%2C%20and%20embedding%20access%20to%20restricted%20functionality%20by%20the%20presence%20of%20an%20add-in.%26nbsp%3B%20So%20everyone%20gets%20the%20main%20app%2C%20but%20only%20those%20users%20requiring%20the%20additional%20functionality%20having%20the%20extra%20package%20applied.%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3ESince%20you%20already%20are%20supporting%20plug-ins%20for%20other%20purposes%2C%20this%20might%20not%20be%20too%20hard.%20If%20you%20create%20a%20new%20%22admin%22%20plugin%2C%20it%20could%20be%20as%20simple%20as%20a%20button%20that%20launches%20a%20new%20process%3B%20you%20can%20even%20probably%20just%20use%20the%20admin%20exe%20as%20a%20file%20in%20that%20plugin%20msix%20package.%26nbsp%3B%20The%20key%20here%20is%20just%20in%20eliminating%20the%20extra%20shortcut%20and%20using%20the%20existence%20of%20the%20admin%20plugin%20package%20to%20provide%20access.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EAs%20to%20Protocol%20handlers%2C%20those%20seem%20to%20be%20working%2C%20but%20you'll%20have%20to%20test%20yours%20to%20be%20sure.%3C%2FP%3E%3C%2FLINGO-BODY%3E
New Contributor

Hi folks,

we are planning to migrate our application to MSIX very soon, and at this point we have a couple of questions regarding the architecture of our future MSIX installer.

 

First, some information about our application which we currently deploy via WIX & MSI:

- It is the client application of a Client/Server solution

- C# WPF Main application and administrative console (currently migrating to .NET Core 3.1)

- Main application heavily relies on Plug-Ins

- C++ configuration application

- OpenJDK runtime for some JAR workloads we start from within the main application

- we register an own URL protocol handler in HKCU, which starts a small EXE which in turn starts our main app

- The main application, admin application and config application should be in the start menu

- Not every user should have access to all applications (most only the main application). 

 

Now some points we don't see very clearly at the moment:
Q1: When we package all application into one MSIX each independently, can the applications still start each other from within the code?

Q2: When we package all applications into one MSIX, can we "turn off" (hide from the start menu) applications a specific user should not be able to use?

Q3: Would it be better to package the admin and the config app as an optional package to the main application and if yes, can an optional package still have a start menu entry? (if I read this article right, I think the answer is 'no' https://techcommunity.microsoft.com/t5/windows-dev-appconsult/supporting-a-modular-windows-applicati...)

Q4: Our protocol handler command is registered to "C:\Program Files\...\ourhandler.exe". How would that have to change in order to find the new install location?

Q5: When we package the OpenJDK as a depencendy with our main application, are we able to call it from there?

 

Sorry if these might be trivial questions for some of you, but we are just starting. Any help appreciated, also links to good further reading. We might just not have found the right spots in the MSIX Docs.

1 Reply

@JoeHae365  You'll probably get a better answer from someone at Microsoft, but here are a few thoughts...

 

Currently, Microsoft does not have a way for two separate independent MSIX packages to work together in the same container that is similar to the App-V Connection Group, although there have been hints that there may someday be that support.

 

MSIX does have the ability today for limited plug-in like packages, called dependent packages in some areas but known as Modification packages in the MSIX Packaging Tool.  These secondary packages cannot have shortcuts, so I'm not sure they work like you want.

 

Looking at the documentation you pointed to, you could probably change your approach to meet your needs, by implementing a single shortcut for the end user, and embedding access to restricted functionality by the presence of an add-in.  So everyone gets the main app, but only those users requiring the additional functionality having the extra package applied. 

 

Since you already are supporting plug-ins for other purposes, this might not be too hard. If you create a new "admin" plugin, it could be as simple as a button that launches a new process; you can even probably just use the admin exe as a file in that plugin msix package.  The key here is just in eliminating the extra shortcut and using the existence of the admin plugin package to provide access.

 

As to Protocol handlers, those seem to be working, but you'll have to test yours to be sure.