I am currently testing out AppX for a customer Appx is fairly easy for small applications such as Adobe Reader and so on.
does anyone have any experience in packing larger Applications with multiple MSI files and possible registry changes file changes and so on ?
how do you specify multiple MSI files is that possible ?
the documentation is not specific in how you achieve that.
With Desktop App Converter, making customisation while creating AppX packages is not straightforward. It may be easier to use one of the application repackaging tools which enable you to capture any number of MSI and make the necessary customisations, including any changes to the registry or file system. Here's the list of some of such tools on Microsoft website: https://learn.microsoft.com/en-us/windows/uwp/porting/desktop-to-uwp-root
Converting the packages is now much easier with the new free Express edition from Advanced Installer, developed in partnership with Microsoft.
It has a GUI that allows for advanced customization of the APPX packages, without requiring you to have knowledge about the internals package schemas.
If you have any questions about it, let me know, would love to help.
Disclaimer: I work on the team that builds Advanced Installer.
Related
I'm developing a Visual Studio application with WPF, but right now is the moment where I have to choose my installer.
I need my project to be able to write on the GAC and on registry, but I'm not sure if I should use Visual Studio installer or Wix... I can't find on Google information that says exactly the differences between both of them.
I found that Wix is more complete, but I can't find any article that specifies real differences between one or another...
Can anyone help me to find more specific information or to choose between both of them?
EDIT: Sorry, I specify:
I'm using Visual Studio 2010 professional.
The end product is the same, a windows installer msi.
It's just different how you get there. With the old vdproj there wasn't much other than setting up files to be copied and registry keys as far as I remember. Anything else and you would have to create a custom action in C++ or VBS, not a particularly easy task if you are .net developer.
However with the advent of Wix there are a lot more in-built custom actions which enable you to create a rich installation experience and if you need to create your own custom action you can use .net. Also it is much easier to create a bootstrapper which can install dependencies along with your msi as well as being able to create a front-end in WPF.
As #nvoigt said the old vdproj type is not supported in VS2012 and it also cannot be built by a build server without doing some nasty setup (you have to install VS).
All in all there really should be no question of what to use, Wix is the way forward.
Caveman_Dick wrote:
"Anything else and you would have to create a custom action".
And that in a nutshell is the difference. Visual Studio Deployment Projects heavily abstracts you from the underlying windows installer and seals away a great deal of it's ability. This goes against the very design of Windows Installer which is supposed to be a declarative, transactional programming model.
Take installing a Windows Service as an example? Windows Installer has the ServiceInstall table. VDPROJ fails to expose this so you are off writing brittle custom actions resulting in a less elegant and less robust installer.
WiX on the other hand is a very thin abstraction. It's all about XML XSD elements and attributes that represent the underlying Windows Installer table data. The build process simply transforms the XML to SQL tables. If MSI can do it, WiX can (99%) do it.
VDPROJ was a horrible mistake and Microsoft has finally owned up to it and killed it. Now WiX doesn't have UI designers ( I've written one on CodePlex though) so you might also want to consider InstallShield Limited Edition (FREE).
Using a combination of ISLE and WiX I can get the best of both worlds.
With Setup projects no longer shipped with current versions of Visual Studio, you might want to use Wix. Otherwise, you will have to write it again once you switch to a current version of Visual Studio.
I've been tasked to create an installer that will handle and install multiple .msi files. I nearly went down the InstallShield route, but you need to Premier edition to create Suite installations, and to say you're paying almost £3000 doesn't even let you fully customise the UI.
For our last release I wrote a custom Setup.exe file which looks in the same folder that it is stored, for the msi files we wish to install, and then silently installs each one. It's pretty basic though, and we now need something more professional.
At the moment I've got 2 main options:
Use WiX - This is free and seems to offer a lot of customisability. I'm not too sure yet what exactly it can do, and it will take a bit of time to learn.
I can expand upon what I already have and build my own installer that allows the user to pick which features/components they want to install and which they don't. I would prefer this if I could get the installer to download the required msi files from a server, install them, then delete them. I just don't want to have to include a separate folder full of msi files with the main setup download. Would this be possible without TOO much effort? Also, using this would I be able to add a single program to the Add/Remove Programs menu?
Any ideas welcome :)
I would recommend checking out the features of Burn in WiX 3.6. You can create a bootstrapper and it has the capability to download your installation packages from a server. You can fully customize it or use the standard bootstrapper application. You can use your current .msis as well. You don't have to convert all of your .msis to WiX to use the bootstrapper functionality.
I'd recommend reading this blog post by Rob Mensching.
How effort free it is depends on how complex your set ups are, the interdependencies and their pre-requisites.
For instance you want to install product X, but it needs a database server installed, which need a .net framework upgrade, which need reboots..
Wix is for creating msi's so it would only be a help if you wanted to create an msi could manage the install of several apps.
WiX 3.6 is still a beta project and Burn is still a work in progress. Truthfully InstallShield Suite installers are pretty new and still a work in progress as well.
Before you get all freaked out over the cost of InstallShield, you need to decide exactly what your setup.exe needs to be able to do. Then you need to do a feature gap analysis between InstallShield and WiX and come up with labor estimates for rolling your own, doing it in WiX and doing it in InstallShield.
It certain situations the off the shelf tools aren't mature enough and it makes sense to roll your own. ( Think MS SQL Server, Office, Visual Studio ) but for most line of business applications you probably just need to pick the tool that gets you closest to where you need to be.
For something that needs to be a little bit more professional than your own custom setup.exe, with less of a learning curve than WiX and Burn, and less of a pain on your wallet than InstallShield - I would suggest MSI Factory, not for MSI Factory (it would speed up your WiX learning though) but for the bootstrapper thats included.
The learning curve is less than Burn, and there's a 90 day trial so you can see if its good enough for you.
InstallShield will let you customise the installation interface, and for that hefty price tag you get support and maintenance (very useful when you're ramping up from scratch).
What you save on up front cost with InstallShield, you'll invest in terms of time with WiX - so you really need to do a cost/benefit analysis and figure out how much your time is worth. InstallShield is just as powerful as WiX when you really start to understand Windows Installer and what's under the hood. Many commercial developers will use elements from both depending on individual project requirements.
What are the installer options that lets you create an highly customized installers for Windows? I have tried Visual studio and Advanced Installer, they aren't user friendly and not completely customizable.
By User friendly I mean easy to add files and make registry changes as needed.
By customization, I mean easy to edit installation dialogs etc.
NSIS is a very good installer but may not help if you are targeting an MSI package.
Because you tried Visual Studio and Advanced Installer, I feel you are trying to create a Basic MSI package. So I will answer keeping that in mind.
Installshield has many types of projects:
Basic MSI
Installscript(Non-MSI)
Installscript MSI
With Basic MSI you are basically stuck with the Windows Installer engine. Your UI is as customizable as Windows Installer allows. And that means not much.
Installscript projects are quite flexible and you can do a lot of stuff in it. You can create dialogs or import it from external resource dlls etc... But this is a non-MSI type project.
I would not try Installscript MSI.
If you want real flexibility, create your own UI using any of the many solutions available. VC++, .NET C# Winforms, WPF, Python etc...
The custom UI solution can be made as flexible as you want. This will work well if you keep one thing in mind:
UI sequence is meant for gathering user-input ONLY. NO system changes
are to be made.
So, you can use your custom fancy UI solution to gather all info needed, store the info in Public Properties and invoke the MSI package silently passing all the Public Properties to it. You are done.
Your two goals:
User-friendliness
Customization
can easily be met, then.
Greetings!
I have a solution in VS2010 that defines 3-4 individual applications.
These 3-4 apps are individual (but related) components that I need to have individually installed on our production servers during deployment. I toyed with using WIX mondo to generate a multi-feature WIX installer, but found that it would be more beneficial to allow that these applications be able to be installed individually as well as via a single-source for all of them, preferably configurable to choose which to install during an installation.
I noticed that there is a WIX project type called "Bootstrapper Project" but I cannot find much documentation around it on the web, and do not know if it is a project type that will actually assist me in creating a deployment installation bootstrapper for my projects. (i.e. a setup.exe file that will install, one after the other, each project as either defined in the installer, or optionally selectable via the installer as it runs)...
what is the best method to do this within WIX, using pre-existing WIX installers for individual programs?
In Wix, the support to create a bootstrapper is through a tool called "Burn". Burn has been pushed out to v4.0 (or version 3.6). So that isn't much help.
You can use an open source tool like dotNetInstaller: http://dotnetinstaller.codeplex.com/
Here is an overview on how to create a setup installer that checks for the .NET Framework (which in and of itself is not very useful, but shows you how to work with dotNetInstaller):
http://www.lostechies.com/blogs/gabrielschenker/archive/2010/05/19/creating-a-bootstrapper-with-dotnetinstaller.aspx
Or you can follow the instructions here: http://msdn.microsoft.com/en-us/library/ms165429(v=VS.100).aspx
And use the Bootstrapper Manifest Generator here (although there appear to be 64-bit issues): http://code.msdn.microsoft.com/bmg
Why should one go for Windows Installer XML (WiX) when we have in built .net MSI installer?
It would take me hours to rant about everything I hate about VDPROJ. I won't because in my (expert) opinion it's already settled law that VDPROJ sucks. If your install is so simple that you haven't noticed any problems, then be my guess and stick with it. But if you already find yourself fighting the tool trying to get it to do things it doesn't do, then take my advice and dump it fast for WiX.
10 things I hate about VDPROJ
No MSBuild Support. Sure, you can call devenv from the command
line but it's not as good.
No exposing of the critical concept of
a component. Every file/reg key is a keyfile of it's own component.
No effective way to fully exclude automatic dependency scanning.
Shortcuts are always Advertised
No way to describe a service.
No way to describe many things which leads to overuse of custom
actions.
No way to fine control the scheduling / execution of
custom actions. Too abstracted.
Abstraction is wrong. Deferred
CA's are scheduled with Impersonation which breaks on Vista.
Various limitations lead you down a path of massaging the built MSI
during postbuild to get around all the limiations. Results in a
very poor build automation hacks.
Merge Module directory tables
are authored incorrectly.
100 other things suck that I'm not
remembering right now.
The introduction of WiX tutorial gives the basic idea about WiX advantages comparing to other setup development tools (including VS setup projects):
declarative approach
unrestricted access to Windows
Installer functionality
source code instead of GUI-based
assembly of information
complete integration into application
build processes
possible integration with application
development
support for team development, both
in-house and third-party
free, open source
Hope this helps.
Visual Studio deployment packages can only be built by visual studio. They cannot be built using plain MSBuild command lines, which makes them less than ideal for e.g. build servers.
All the above answers have included most of the annoying features of Visual studio setup projects (.VDPROJ), one thing that most people have missed.
.VDPROJ file format is such that, and if we make a small
change to one single entry it completely rewrites all the entries
within which makes it impossible to merge changes from 2 different
branches.
Some of us don't want to use / can't use the .NET installer.
Some of us don't want to have to install Visual Studio to distribute a program, written in, say, Borland Delphi. WiX and .NET have nothing to do with one another.
WiX provdes a much more complete feature set than the .NET installer.