The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
Look, if WIX does all that you want and makes you happy, then cool. I'm just saying that I spent a lot of time in "installer space" (because it was part of my primary job function at two places of work, so that's work over >5 years, with a gap in the middle) and WIX and InstallShield were a mission where InnoSetup wasn't.
InnoSetup also has tooling which targets a few different user groups, from text manipulation masters to competent programmers to people who just want to click their way through making an installer. Which is great, because sometimes I'm all three (:
And it's free.
And the resultant installers are fast and have the compression that you choose, so can be quite small.
Just give it a go, and if it doesn't deliver ¯\_(ツ)_/¯ I'm still happy to choose it whenever I want an installer system.
Installed the VS 2019 preview and noticed it has a 'built in' installer project type (Setup Project) - just poking at it now as your post reminded me of it.
Had played with WIX VS plugin and was intending to use that (for what is a pretty simple install) but must say I get a little confused by some of the WIX dialog specifications/properties. This new thing might be worth a look.
[EDIT] My bad - old news - and judging by the font on the dialogs this goes back a ways in some form or another. dang. [/EDIT]
Installed the VS 2019 preview and noticed it has a 'built in' installer project type (Setup Project)
Didn't it always? I'm pretty sure that a setup maker was in VS as far back as VS3 or VS4 -- but it didn't work as well as inno setup, so I stopped using it, and never looked for it again (so maybe they took it out and have put it back).
I wanna be a eunuchs developer! Pass me a bread knife!
Yet another vote for Inno Setup[^]. Basic setups are handled using the built-in facilities, starting from a text file script. It includes competent scripting support based on Pascal. For really heavy lifting you can call out to DLL's. Scripts can be compiled from the command line. It receives pretty steady support from its author.
As others have mentioned, Inno Setup's only lack is that it doesn't support MSI. For my money, that's a benefit. MSI and the Windows Installer are over-engineered and poorly documented and supported for the task they are meant to accomplish. Most of the installer-building apps based around MSI are just expensive lipstick on a pig.
You mentioned you're using InstallShield. Be advised that they are #2 on my list of development teams first-against-the-wall-when-the-revolution-comes. We bought their 'international' edition for over $1K a little over ten years ago after the salesperson told us that it supported most European languages, along with Japanese, Korean, and Chinese. Come to find out, the international edition only supports English. You had to pay an additional $500 for each language you wanted to localize your install to. We chucked those ripoff f***ers and went with Inno Setup.
I've used .msi installers forever, but had to give them up a few years ago because of their basic clumsiness, their lack of bigcorp support and the fact that they throw security principles to the wind. Advanced Installer was my last one used.
It took me more than 3 years to develop my distributed installer called Hiveware. It overcomes the security issues and the ease-of-use problem as the user only sees the asked-for app functionality. The platform was finished in December, 2017.
We have a client/server WinForms application. We use a standard VS setup project to create an MSI for our initial installs, but the application is "self updating". We upload new EXEs and DLLs into our SQL Server database. The application looks for new components when it launches and when it finds new ones, downloads them to a temporary location, launches an "updater" EXE, and kills itself. The updater moves the new EXEs/DLLs from the temp location to the application folder and re-launches the main EXE. Works like a champ.
Ditto! We do the same, only using an installer (InstallShield) for the initial installation. After that, the application handles any updates to itself and associated files. Of course there are manual update mechanisms in place just in case we put out an update that breaks the updater!
We also use home-brewed installers for add-on modules using 7-Zip self-extracting libs to create 'smart' installers that detect where the payload needs to go and optionally (on a first install) prompt for a password. They also clean up after themselves.
Currently, we have a scheduled task that runs every morning to build the installers (IsCmdBld).
The main issue we have with InstallShield is that its something that is hard to maintain (people add/remove files from the distributions but there's only one of us that can update the installshield project).