views:

505

answers:

9

In the past my development team we have mostly done waterfall development against an existing application and deployments were only really done towards the end of a release which would normally result in TEST, UAT, PROD releases normally only consisting of three to five releases in a two month cycle.

A release was an MSI installer, deployed via Group Policy.

We have now moved to a more agile methodology and require releases at least once per day for testing, some times more often.

The application is a VB6 app and the MSI was taking care of COM registrations for us, users do not have elevated privileges on their machines.

Does anyone have any better solutions for rapid deployment?

We have considered batch/scripted installs of the MSI, or doing COM registrations per file, both using CPAU for elevated privileges, and ClickOnce. Neither of these have been tested yet.

Edit: Thanks for suggestions. To clarify, my pain point is the MSI build / deployment process takes a long time can take up to two hours to get the new build on to the testers desktops. The testers do not admin rights on their machine (and will not get them) so I am looking for a better solution.

I have played around with ClickOnce, using a dot net wrapper which starts up the application and has all the OCX/DLL vb6 assemblies as isolated dependencies, but this is having issues finding all the assemblies when it starts up, or messages to that effect.

+1  A: 

I'd recommend ClickOnce with the option to update on execution. That way only people using the software receive and install the updates.

DavGarcia
Do you have any good references for ClickOnce with VB6 COM references?
benPearce
Maybe this http://msdn.microsoft.com/en-us/library/aa730841.aspx
MarkJ
+1  A: 

You could try registry-free COM. See this other question. ActiveX EXEs still have to be registered though.

EDIT: to clarify, using registry-free COM means the OCX/DLL components you mention don't need to be registered. Nor do any OCX/DLL components they use. You can just copy the whole application directory onto a tester's machine and it will work straightaway.

MarkJ
I believe MarkJ meant to say that an ActiveX EXE still requires registration.
Bob
Guess that was ambiguous, I've edited it now.
MarkJ
A: 

You should try an automated build/deploy process or script that you can manually run. Try Teamcity or CruiseControl. Good luck!

davogones
+7  A: 

CruiseControl and Nant are probably your best bet for builds with flexible output. But Rapid Deployment?

My concern is that you are looking at the daily builds in the wrong way. The dailies do NOT need to be widely deployed. In fact, QA and Development are the only ones who should care about the builds on a day to day basis. EVen then, the devs shouldn't be out of sync ;).

The customer team should only recieve builds at the end of a iteration. That is where you show them what you have done and they provide feedback and you move forward from there. Giving them daily builds could cause a vicious thrashing that would kill your velocity.

All that being said, a nice deployment package might be good for QA. But again, it depends on how in step they are with your development iterations. My experience, right or wrong, is that QA is one iteration back testing the deliverables from the last iteration. From that point of view, they should be testing with the last "stable" release as well.

Craig
I have added more info, please see above
benPearce
I think the underlying issue is that QA can't install to their machines. I think the answer is either trust them and give them privledges or do the work. Both are valid paths with pros and cons.
Craig
Hey, just had a thought. How about a service that has the privledges to do the COM regs. You could send a signal to the service and it would do the registrations. Just a thought.
Craig
A: 

I'm not sure just precisely what your pain point is.

  • You specifically mention registration of VB6 COM objects. Does the installer sometimes fail because of that?
  • Is it that the installer works but people don't know to install the new build so they are more often than not reporting bugs on an old build?

If the former, then I suspect the problem to be that VB6 was very likely to play fruit basket turnover with the GUIDs when rebuilding the solution. Try recreating your public interfaces in MIDL and have your VB6 classes implement those interfaces.

If the later, then try Microsoft's SMS product. No, it has nothing to do with cell phones. If all the user's aren't on the same domain, then you will have to build an "auto update" feature into your product. Here is a third party offering that I've heard of but never used.

Glenn
I have added more info, please see above
benPearce
+5  A: 

Is this something you can do in a virtual machine? You could securely give your testers admin rights on the virtualized system and most virtualization software has some form of versioning so you can roll back to a "good" state if something goes wrong. I've found it to be very useful for testing.

dmo
+1  A: 

If I understand your question correctly, you need admin rights to install your product. I see three options:

1) Don't install to the tester's desktops. Get some scratch testing machines (as dmo suggested, VMWare might help) that you can safely give them admin rights to. This may mean giving them a test domain and their own group policy to edit.

2) Build a variant that doesn't require MSI installation, and can be executed directly. Obviously your testers would not be testing the deployment and installation process with this variant, but they could perform other tests of the product's functionality. I don't know if this is possible with your product; it would certainly be work.

3) Take your agile medicine: "[prefer] responding to change over following a plan". That is, if denying admin rights to your testers is interfering with their ability to do their jobs efficiently, then challenge the organization to give them admin rights. (from experience, this will mean shifting to #1, but it might be the best way to make the case). If they are expected to test the product, how can they not even be allowed to install it in the same way a customer would?

Zac Thompson
Zac: I agree with your comments in 3, we are already having discussions with IT around admin rights for testers, however the product is an internal application only, we not a software company.
benPearce
My point was only this: either they are expected to test the installation process or they are not. If so, then they need to have the rights to perform the installation. I believe that dmo's suggestion may be the best choice. But if not, then you don't need to install it in the same way (part 2).
Zac Thompson
+1  A: 

If the MSI deployment is taking velocity out of agile testing, then you should test MSI deployment less regularly.

Use XCOPY deployment wherever possible, using .local for COM components. This can be a problem with third party components. As third party components are pretty stable, you should be able to build a custom MSI for these, install them once and be done with it.

Chui Tey
Do you have any more information about the local COM components. I have had limited success with RegFree COM?
benPearce
It's known as DLL/COM Redirectionhttp://msdn.microsoft.com/en-us/library/aa375142(VS.85).aspx
Chui Tey
A: 

I'm using SetupBuilder (http://setupbuilder.com/products_setupbuilder_pro.htm) for all my builds. Very extensible. Excellent support.

Not sure exactly if it fits your needs, but this kind of post on the forums, "Installing as a limited account user (non-admin) on XP" (http://www.lindersoft.com/forums/showthread.php?t=11891&highlight=admin+rights), makes me think it might be.

Stu Andrews