Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to force deployment project to update files during installation of newer version?

I have a Deployment Project for my VS2008 C# application. When installing a new version of my application I want to make sure that files are updated with the files contained in the installer.

I want my installer to automatically remove any old version of the installed application. To do that I follow this procedure (also described here):

  1. Set RemovePreviousVersions to True
  2. Set DetectNewerInstalledVersion to True
  3. Increment the Version of the installer
  4. Choose Yes to change the ProductCode

For the assemblies I make sure the AssemblyVersion is set to a higher version:

[assembly: AssemblyVersion("1.0.*")]

Everything is working as intended except for my configuration files (xml files). Since I cannot find a way to "version" these files I cannot make sure that the files are updated if they have been modified on the target machine.

Is there any way to do this and how?

UPDATE: I have tried the approach/solution/workaround found here

  1. Include the file directly in a project with the following properties: "Build Action -> Content file" and "Copy to Output Directory -> Copy always"
  2. Then add it to the deployment project via Project Output->Database->Content Files

Unfortunately it did not make any difference. The behavior is exactly the same.

like image 332
Simon Fischer Avatar asked Nov 01 '10 14:11

Simon Fischer


People also ask

How do I add files to ClickOnce deployment?

On the File menu, click Open to open your application manifest. Select the Files tab. In the text box at the top of the tab, enter the directory that contains your application's files, and then click Populate. Your data file will appear in the grid.

How do I update a Visual Studio project?

To upgrade a project created in an earlier version of Visual Studio, just open the project in the latest version of Visual Studio. Visual Studio offers to upgrade the project to the current schema. If you choose No, the project doesn't get upgraded.


3 Answers

Add the following property to the Property table of the MSI: Property REINSTALLMODE with Value amus

Note: This will cause all the files in the MSI (versioned and nonversioned) to overwrite the files that are on the system.

like image 130
Linda Avatar answered Oct 15 '22 20:10

Linda


If you're willing to use Orca (there may be another way to do this method, but it's the only one I know of) you may be able to set up RemoveFile directives.

See here for a typically light-weight MSDN document -- could be a starting point. http://msdn.microsoft.com/en-us/library/aa371201.aspx

Alternatively you could always create a very simple bootstrapper executable that simply calls "msiexec /i REINSTALLMODE=oums" (or whichever command-line switches are needed). Call it setup.exe if you like...

Better option long-term may be to switch to InstallShield or similar -- VS2010 includes a light version of IS and I believe they're moving away from vdproj projects.

like image 2
CJBrew Avatar answered Oct 15 '22 20:10

CJBrew


Have you tried the approach/solution/workaround found here?

  1. Include the file directly in a project with the following properties: "Build Action -> Content file" and "Copy to Output Directory -> Copy always"
  2. Then add it to the deployment project via Project Output->Database->Content Files
like image 1
sif Avatar answered Oct 15 '22 19:10

sif