Context:
We want to force the installation of new versions of our MSIX bundled apps. Because of risk of data loss, we don't want to force close them but give users the option to save their work and install the update. Sometimes critical updates happen and we want to update the app ASAP (not wait until next morning).
The solution we have thought of is, using Intune to distribute .appinstaller files, which then will be in charge of installing and updating the app, using the built-in updating system.
Uploading a .appinstaller file via the portal is not supported (AFAIK)
Questions:
Is it possible to distribute .appinstaller files via Intune
Can you schedule app updates in Intune
Is it possible to gracefully close the app in stead of forcing it
Are we looking at it all wrong and are there better ways for facilitating our use case
Thank you for any help in advance!
This is a partial answer that focuses on questions 2 and 3. I am mostly using Azure as opposed to Intune, so I have no idea how to distribute it via Intune. Anyways, you can add a Package.appinstaller file to your MSIX project and specify both what schedule you want to have to update and to allow the user to save their data before the application shuts down and updates. The cool thing here is that this all seems to be handled through configurations as opposed to any code changes. For more information, see the two comprehensive resources that I found useful for one of my questions.
The link below really explains the answer for questions 2 and 3.
http://thewindowsupdate.com/2019/02/22/handling-application-updates-with-app-installer-and-msix-in-windows-10-19h1/
The link below explains some of the context too the answer above as it relates specifically to the version of Windows that is being targeted. This is relevant because if you target a lower version of Windows, then these features and configurations will not work.
https://learn.microsoft.com/en-us/windows/msix/app-installer/update-settings
Related
I have a Windows App SDK based desktop application. I am using the single-project MSIX packaging in VS2022. What I need to figure out is how to get the installer to launch 3rd party installers (Nvidia Cuda for instance) as part of the application install. What should be pretty straight forward is lost in the weeds in the sparse documentation on MSIX. I also will eventually want to overlay multiple MSIX installs in one location. I am pretty sure I can't do this directly from Visual Studio but it seems possible using the MSIX Tool. Any pointers would be helpful.
While MSIX doesn't have install custom actions, for some things we can still customize some things at the user system.
Handling this externally from the package deployment is the recommended method. There may be other options, however.
With source code you can modify the app to detect if you need to do something and do it. If "it" needs elevation you need to add the allowelevationcapability in the manifest and there will be a UAC prompt for the user.
With or without source you can instead add the PsfLauncher of the Package support framework to run a script on launch of the app. PsfLauncher will take care of the detection on if run before for you. And the same elevation concerns apply.
As these methods run in the user context they really aren't any good if elevation is needed, hence not the recommended way.
Tim Mangan.
First of all, don't start using the MSIX Packaging Tool. As I said in previous SO threads, that tool is designed for IT pros, not for developers.
Second, as Tim concluded, I wouldn't recommend overcomplicating yourself to deliver those third-party installers via MSIX.
Instead of overcomplicating yourself with integrating the Package Support Framework into your MSIX package, I would think twice if it is worth deploying the application as MSIX. Last time I checked you could still get an identity for your app even if you deployed it with an MSI (I may be wrong here).
If you choose to keep the MSIX for your app, maybe a cleaner solution is to build an EXE wrapper (also called bootstrapper in the packaging world) over it to handle the third-party package installations, and when done with those it can launch your MSIX installation?
Unfortunately, so far Microsoft isn't making it easy for us to define a non-MSIX dependency.
We have an existing cross-platform Mobile Application, that also has an accompanying web application, that uses AWS as a back end (RDS for Database, Four server instances, and a Load Balancer to distribute traffic). APK and IPA files are packaged and sent to the stores, while components are retrieved from our server per request, which enables us to reduce the number of store builds, and make the process easier for getting changes out to clients.
We are at the stage of Development that we need to move to another platform to better facilitate our fast growing client base.
Due to the conditions upon our clients, these things must be considered.
must be cross platform (Android / iOS).
must be offline based (users need to be able to access without an internet connection)
must be able to sync with an existing database when there is a connection
requires Authentication
Cloud based (? may not be the right term, but meaning the ability for us to store components on a server and have a device check for updates and download a local copy - enabling us to work and distribute fixes faster)
Ideally compatible with AWS
We are currently looking at Xamarin to facilitate us for this move, however there is a lot of documentation and plugins out there to do all sorts of different things.
As developers, we all have some .net / c# experience, however none particularly with Xamarin.
We have a particular timeline that we need to adhere to (and need to ramp up in the next couple of weeks), and right now are essentially stuck in Limbo in a research phase, as we can't afford to get some things right. We are unable to move forward until we know Xamarin (or some other framework) is able to do everything that we need it to do.
It's hard to escape from the 'code it all ourselves' mentality - especially as we don't know where to start looking in terms of third party packages for Xamarin, and their documentation itself.
A lot of documentation mentions various systems of Azure - we would not be against moving to Azure over AWS if it _had to be done*, but because of the existing infrastructure with AWS - staying with AWS is obviously the preferred option (users need to access the current system whilst we build the new system)
This stack overflow post is to ask for recommendations, comments, or other observations on anything and everything involved with the process in regards to choosing frameworks, design patterns, methodologies, third party packages, etc.
Obviously we would like to use best practises for everything moving forward for optimum scalability and cleaner, more robust code. It's just hard to know where to start!
Any input will be highly appreciated.
Cheers!
edit: I am aware that this is 'asking for recommendations' which is 'specifically off-topic'. I have read the posting guidelines about open ended discussion, and am quite confident that this case is different. There is an underlying problem here, in that we are seeking advice on combinations of frameworks and plugins that are fully compatible with all of the items in the list (above)
Let's try to breakdown each of your requirement and constraint mentioned in the question.
1. You need a offline first architecture (With Sync mechanism)
Xamarin + Azure would make a good comdo for you, as it would support offline storage out of box (With a simple PullAsync call).
Albeit there are AWS SDK available for Xamarin. Here it goes http://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/setup.html
So the call is yours. There are few other ways to achieve caching offline storage in Xamarin, you can build upon those strategy in your logic. Alternatively there is a very interesting C# library Akavache for caching and offline storage.
2. OAuth 2.0 Authentication
Xamarin has a very good library named Xamarin.Auth. Though I would not say it is very easily extendible at this but there has been some serious work going on from Xamarin on this library.
But I would say it is very easy to use. The apps I have developed so far that includes - Google OAuth, Facebook integration, Microsoft account integration. It worked fine for all of them.
3. Cloud based distribution
There are nice tools available with Microsoft. Which makes the distribution easy. Have a look at https://mobile.azure.com . Also hockeyApp is good for distribution I found.
Where to start:
A very good starting point for you would be https://channel9.msdn.com . Just go there search with keyword "Xamarin" and view some videos. May be all these cross platform dynamics will be much easier for you.
Overall I found Xamarin a cool product to work with. Because anything that can be done in native Objective C/Swift or Java can very well be done in Xamarin using C#.
I have a client that wants a simple install for a small windows system tray application. They want the application to update automatically without asking the user. The app is small and the update should be minimal in size (most of the business logic and code will be behind a web service).
I have been eyeing Microsoft's ClickOnce technology since it seems built for such things. My question is can it update silently behind the scenes without the user knowing it did so? If not what's the best route to accomplish this? Is there another technology better suited?
I realize that updating without telling the user is subjective, but the client is adamant on this.
Yes, ClickOnce applications update automatically when a new version is deployed onto the server. There are multiple ways to force this:
http://msdn.microsoft.com/en-us/library/s22azw1e.aspx
Also take a look how to have your own gui to inform users about updates:
http://msdn.microsoft.com/en-us/library/ms404263.aspx
Try this: set -MinVersion equals to -Version, then your App always will download a new version without asking the user.
First, I don't know if this is the right place to make this question but, I don't see any other place where to put it.
I would like to know how could I develop a mobile HTML5 App (using PhoneGap) with another friend, without need to have a copy of the project in more than one PC.
Could I somehow host the Code on a FTP Server and then we both could work on it for example, on Eclipse?
You need to look into using a source control system of some kind. Source control comes in many flavors, but in general it allows software developers to sync code between many servers, and allows developers to work concurrently without breaking each other's environments (imagine I have to take a component offline for many hours to code on it, but other people rely on it to do their work).
The two most common source control solutions are SVN and Git. Both of these work on Mac/Linux/PC and are documented thoroughly online.
without need to have a copy of the project in more than one PC.
How should that be possible? When want to view view something on your local computer, you must have it available on your local computer. But I think I know what you are looking for, three suggestions:
Use a cloud-based IDE. Cloud9 for example is one of the best. However, all of them tend to be slow and buggy.
Just synch the files between your computers. One of the best hosted services is Dropbox, or you can install ownCloud on your own Server.
Use a version control system. This is pretty common for software development as you can easily reproduce who made which change when and why. The best option is git and Github for hosting.
I know this is months late, but check out Adobe's Phonegap Build. Build and deploy in the cloud. They also allow you to assign a development team.
www.adobe.com/PhoneGap
I am currently building an application and want to have an installer and automatic silent updates for it.
Dropbox, Spotify and Chrome all are amazing at updating without anyone noticing. So I took a look at the Dropbox Roaming Folder in AppData and found a file named DropboxUpdateHelper.exe with an NSIS Icon. In the Spotify folder I could only find a SpotifyHelper.exe and a mentioning of NSIS in the Terms.
Is there a tutorial of how to install an application inside the Roaming Folder and have a silent auto updater? I am not fixed on NSIS but would prefer an open source and free installer.
NSIS has the INetC plugin that can be used to download things from the internet but I don't know if there is an auto update tutorial out there. You might also want to take a look at the VPatch plugin...
There are many variables to think about here:
Should your main application look for updates or just run the updater on application (or windows) startup so it can check?
Are the files on the server signed or do you have other ways to detect invalid/corrupted/MitM updates?
Do you require access control/DRM before downloading/applying updates?
How will you handle major version number updates? Will you support more than one major version or force upgrades?
Do you require administrator rights to update? UAC handling?
How are you going to support upgrading from 1.0 to 1.2? Update to 1.1 first or support every possible minor version upgrade path?
I'm sure there are many other issues you also have to think about. You should probably try to answer all these questions before you start coding. During development you might find other questions or that you have to change the design completely.
IMHO, this is not a simple question and I don't think you will be able to find a drop-in solution that fits your exact design/requirements...
It is easy to download files from internet using NSIS (there are several plug-ins for this purpose: NSISdl, InetC, ...) but such functionality is more about coding.
There is no exact solution for this - as Anders said you need to specify every detail to achieve required behaviour.