I've been using Orca to manually add property "REINSTALLMODE" value "amus" into the msi property table every time I build it.
I'm sick of this. I looked into Wix but so far I don't think its worth the hassle to learn it/switch to it just yet, even though it will solve this problem. Is there a way I can automatically insert this one property into the msi after the build is complete? Preferably, it will use only vanilla visual studio 2010 and not depend on third party programs or system environment variables.
Any thoughts?
Thanks,
Isaac
use a vbscript
change an existing property
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase("path_to_your_msi", 1)
s_SQL = "SELECT Property, Value FROM Property Where Property = 'ReinstallMode'"
Set o_MSIView = o_DataBase.OpenView(s_SQL)
o_MSIView.Execute
Set o_MSIRecord = o_MSIView.Fetch
o_MSIRecord.StringData(2) = "amus"
o_MSIView.Modify 2, o_MSIRecord
o_DataBase.Commit
add an new property
set o_installer = CreateObject("WindowsInstaller.Installer")
set o_database = o_Installer.OpenDatabase("path_to_your_msi", 1)
s_SQL = "INSERT INTO Property (Property, Value) Values( 'ReinstallMode', 'amus')"
Set o_MSIView = o_DataBase.OpenView( s_SQL)
o_MSIView.Execute
o_DataBase.Commit
Another option is to include the version number in the application's install folder.
Set Application folder's default location to something like:
[ProgramFilesFolder]\[ProductName]\[ProductVersion]
Also set the Setup project's 'RemovePreviousVersions' property to true.
This should delete the old version's folder and create a fresh folder for the new version.
Remember to change the Setup project's version property every time you do a new release.
My honest thoughts? You are starting down the road of "VDPROJ is fine except I also need it to do [x]." You'll find a way to hack it and then you'll repeat. Before you know it you'll have a frankenstein solution that is doing all kinds of wierd things to your MSI because the tool doesn't expose it or worse implements it wrong. I really suggest going to InstallShield 2010LE/Pro or WiX.
However, if all you want to do is change REINSTALLMODE from omus to amus, I reccomend using Orca to create a transform one time and then in a post build step apply the transform to your built MSI.
cscript WiUseXfm.vbs [path to original database][path to transform file][options]
Apply a Transform