views:

467

answers:

1

Hello:

I am using VisualStudio2005 and a vdproj to create a simple MSI file. I need to pass in the REINSTALLMODE property when I launch it.

I know this can be done via command line, like so: msiexec.exe /i foo.msi REINSTALLMODE=amus

However, if a user chooses to click the msi directly (launching the wizard), the property is not passed. Is it possible to do this via the VS and vdproj?

Some options I've investigated:

  • When I build the MSI via VS, it also produces a setup.exe. Is there a way to pass the REINSTALLMODE property through this maybe?
  • I installed Orca, which allows me to view/edit the Property table of the MSI. I could add it this way, but then I'd have to add it every time I do an MSI build.

Thanks for any advice.

+2  A: 

Sadly, I can't find a way to set other MSI properties right in VStudio.

Nonetheless, one method that should work is this:

  1. Use Orca to create a transform (MST) that only change the property REINSTALLMODE. (In short, you edit the property & save as a new transform, then use the "Generate Transform" command to create the MST.)
  2. This transform can be applied directly to your MSI using the MSITRAN.EXE command (available in the same Windows Installer SDK where you found Orca).
  3. You could either: (a) find a way to have Visual Studio always run your MSITRAN command immediately after the MSI build, or (b) just run your MSITRAN manually (from a batch file or such) after building but before testing.
ewall
I like your style, thanks for the detailed response. Let me give this a try...
Ken
(I should probably try to use WiX if this msi gets anymore complicated)
Ken
Indeed, WiX gives you access to all the complexities of Windows Installer. But it is a bit of a learning curve. Good luck!
ewall