When Microsoft released Visual Studio 2012 on the 16th of August 2012, I was disappointed to learn that they had removed support for the Setup and Deployment project types.
InstallShield Limited Edition (ISLE) is free for Visual Studio developers and replaces the functionality of the project templates in Visual Studio for setup and deployment.
Fortunately you can still open an VS2012 solution files with VS2010, and continue to use the Setup and Deployment functionality from there. However you’ll have problems when the applications/assemblies you want to package are using .NET 4.5 as VS2010 will not support those projects.
This left me in a bit of a pickle as i’d pushed the .NET version to 4.5, which left me the option of using Installshield Limited Edition for Visual Studio. However the version on the Installshield website was labelled as targeting Visual Studio 11. Proceeding to download it, and install it revealed it didn’t work with VS2012 at all. Thankfully last week I stumbled across a blog announcing SP1 to Installshield 2012, and the Installshield LE for Visual Studio has also been updated to support Visual Studio 2012 RTM.
Downloaded, installed and it works!! Woo hoo. The Installshield UI has been crammed into the Visual Studio IDE, but it works well. Instead of disabling options you can’t use, they’ve left them enabled with the a “sales pitch” screen appearing when you click on them (fair enough).
I created the installer for my windows service pretty quickly, built it and noticed that it wanted to deploy to C:program files (x86) and not my usual C:program files directory. After a little googling, it seems that the Limited Edition is just that, and x64 installations are not supported.
The usual predefined folder of ProgramFiles64 is not present, and when you try to install to [WindowsVolume]Program files it gets corrected to [WindowsVolume]Program files (x86). As installscript is disabled in Installshield 2012 LE, i can’t do much else to fool it. The good news is that because it’s just a file copy that Installshield is doing and my assemblies are set to Any Cpu they still run as x64 processes.
It’s not just the file copying that’s affected by Installshield 2012 not having “Enhanced 64-bit application support”, registry entries are put into the Wow6432Node part of the registry. Registry settings being in the wrong location is something that i can handle in my code… (that’s another blog post).
I did look at trying to leverage the Visual Studio ClickOnce deployment to deploy my windows service, but it’s not really doable for the following reason;
ClickOnce does not support custom destination folders. The reason why ClickOnce-deployed applications are installed into the cache is that such cache is maintained by the .NET Framework, which is responsible for executing applications deployed via ClickOnce.
So what’s the solution?
If you don’t care about the fact that the files get installed to the x86 program files folder and you can fix any other issues in your app then use Installshield 2012 LE.
If you don’t mind using VS2010 and you are using .NET4 or below then that’ll still work.
Otherwise unless you want to roll your own solution, you’ll have to use a separate installation program such as Installshield 2012 Pro.