views:

217

answers:

4

I have a big MDI Suite application that I've written for our company. It is installed on two Citrix servers, and is then accessed by hundreds of Windows terminals across the plant.

Before installing updates, I (the sole developer) test my new routines until I am satisfied that it is going to perform how I expect it to. This generally works, but it has the group manager worried.

He wants me to install a BETA version that can be tested on in our workplace environment by others.

To do this, I would need to install my application twice on the Citrix servers machines so our employees can test it (right?); however, when I try to install the application again on the same PC (i.e. the Citrix server), Windows says it is already installed.

The VS2008 Setup and Deployment Installer has a Product Code. Should I just change this? What problems do I need to be aware of? Do I need to keep track of two Product Codes (one for testing, and one for release)?

How do I install 2 working versions of the same application on 1 PC?

+1  A: 

Since you want to allow dual installs that should work. I'd make a new "beta" installer that may target a different install directory to keep bleed over to a minimum.

Here's the MSDN write up on changing Product Code for some more info.

Another possible angle, that may be a lot simpler.....is there a test/staging Citrix server you can host it on? That's how we roll out changes here. But that ultimately depends on your Citrix environment/servers in farm...

Oh, and in relation to tracking the product code, in my experience(right or wrong), that isn't as important as making sure you keep your UpgradeCode is sync.

curtisk
+2  A: 

The safest way is to create new ProductCode, new UpgradeCode, new TARGETDIR and make sure there are NO shared directories (besides the system dirs). Make Windows Installer think it's a completely different product.

Changing the ProductCode, but NOT the UpgradeCode may cause existing components to upgrade. When the install runs the FindRelatedProducts action, it will locate anything with the matching upgrade code and attempt to upgrade matching components.

I strongly agree with cutrisk - stage the whole thing somewhere else first (install released version, upgrade to BETA, open it for internal testing, etc.) Then carefully roll it out to customers.

Trust me, you do NOT want your installer to bring down someone elses production service(s) because your BETA "upgrades" some component and the whole system falls over.

joel
+1  A: 

I'd give the beta .exe a different name: app_beta.exe. You can use the same setup to deploy it. You can also keep changing your upgradeCode with each version of the beta or prod release- it's ok for them to overlap.

prod: 2.0

beta: 2.1

beta: 2.2

prod update: 2.3

next beta: 2.4

Beth
Has anyone else tried this? Currently, my app reads and writes all sorts of settings to the App Data folder. Also, it uses the company's SQL Server for data access. Just changing the product name is what the IT guy thinks is going to work, but that isn't going to change *everything* about this, and is not (in my mind) going to be a true test of if it works.
jp2code
I tend to think if they want a true debug/testing environment, I'd need a Citrix server and SQL server set up the same way our existing Citrix/SQL servers are set up because if I have to make 30 or 40 changes to my code just to test it in our existing environment with live databases... well, what's the point of testing? And, then I'd need to test my release versions to make sure I've undone all of my 30 or 40 changes I made so that I could debug the app.
jp2code
Sure, ideally you'd have a dedicated test environment, but lots of places won't go that far. You can have a second db for test, if you want (and third for dev,) and you can use conditional compilation variables in code to separate dev/test/prod, or branch with your source code tool.
Beth
A: 

InstallShield 2009 and later support "multiple instances":

e.g.: http://blog.deploymentengineering.com/2008/03/installshield-2009-beta-part-i.html

William Leara
Well... Our company hasn't purchased InstallShield, and since our applications are only developed for internal use, they likely will not. Corporate would prefer me accomplish my task with Off-The-Shelf items.
jp2code