VB.NET Deployment - Checking for user-modified files

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

Hi all

I've written a program in VB.NET that allows the user to build quotes for installing shower enclosures. As part of the program, I've included a blank Access database. I've provided them with an interface where they can add their own clients to the database

When the user upgrades to a newer version of my program, I don't want the installer to overwrite the Access database file with my blank one again. How can I tell VB.NET to check to see if the file has been modified, and if so, not to overwrite it

Many thanks

Juggler at(@) sonic dot(.) net
 
Well, I assume you are upgrading using a setup in vb.net 2003?

If so isn't there a property for the file whatever.mdb to not overwrite?

Of course from within VB.NET you have the system.io.fileinfo class to get
information on files... but that doesn't seem that it would do much good as
far as setup goes.

Check to see if you can't highlight the .MDB file in the setup and click
properties and set to not overwrite. don't have the IDE open at present but
that is where I would look.

HTH,

Shane

Juggler said:
Hi all,

I've written a program in VB.NET that allows the user to build quotes for
installing shower enclosures. As part of the program, I've included a blank
Access database. I've provided them with an interface where they can add
their own clients to the database.
When the user upgrades to a newer version of my program, I don't want the
installer to overwrite the Access database file with my blank one again. How
can I tell VB.NET to check to see if the file has been modified, and if so,
not to overwrite it?
 
I'm using vb.net 2002

When I go to the File System Editor, highlight the file and select properties, I have the option to adjust

- Condition (seems to only check version/processor info on the computer being installed on
- Exclude (blanket exclude from installation
- Folder (where to install it
- Hidden (is it a hidden file
- PackageAs (not sure what this is for
- Permenent (whether or not to leave it during uninstallation
- ReadOnly (read only
- SharedLegacyFile (this might be it, but I don't really know what the help text is talking about
- SourcePath (file location
- System (is it a system file?
- TargetName (name of file
- Transitive (whether or not the installer should reevaluate the Condition property each installation
- Vital (whether a file is vital for installation or not

There must be an answer out there. It's like saving a user's preferences from version to version. Each time I release a new version of the program, I don't want the users to have to re-enter their info. I can work around the installation problem with preferences by using a text file for the user's preferences. When the program loads the splash screen, I check for the existance of the preferences text file. If it's not there, I can display a window to the user that asks for their preferences information (name, whether they want to print in color, etc.), and then write a text file

Thanks for any help that can be provided

Juggler (@)at sonic (.) ne

----- SStory wrote: ----

Well, I assume you are upgrading using a setup in vb.net 2003

If so isn't there a property for the file whatever.mdb to not overwrite

Of course from within VB.NET you have the system.io.fileinfo class to ge
information on files... but that doesn't seem that it would do much good a
far as setup goes

Check to see if you can't highlight the .MDB file in the setup and clic
properties and set to not overwrite. don't have the IDE open at present bu
that is where I would look

HTH

Shan

Juggler said:
installing shower enclosures. As part of the program, I've included a blan
Access database. I've provided them with an interface where they can ad
their own clients to the databaseinstaller to overwrite the Access database file with my blank one again. Ho
can I tell VB.NET to check to see if the file has been modified, and if so
not to overwrite it
 
In a similar situation, I did not deliver the default data as part of the
application, but instead built it from the application itself when it did
not exist. That is, the application itself checks for data existing and
builds the default template that way. You could include the default data
as an embedded resource and create it where you want when you want.


Juggler said:
I'm using vb.net 2002.

When I go to the File System Editor, highlight the file and select
properties, I have the option to adjust:
- Condition (seems to only check version/processor info on the computer being installed on)
- Exclude (blanket exclude from installation)
- Folder (where to install it)
- Hidden (is it a hidden file)
- PackageAs (not sure what this is for)
- Permenent (whether or not to leave it during uninstallation)
- ReadOnly (read only)
- SharedLegacyFile (this might be it, but I don't really know what the help text is talking about)
- SourcePath (file location)
- System (is it a system file?)
- TargetName (name of file)
- Transitive (whether or not the installer should reevaluate the
Condition property each installation)
- Vital (whether a file is vital for installation or not)

There must be an answer out there. It's like saving a user's preferences
from version to version. Each time I release a new version of the program,
I don't want the users to have to re-enter their info. I can work around
the installation problem with preferences by using a text file for the
user's preferences. When the program loads the splash screen, I check for
the existance of the preferences text file. If it's not there, I can
display a window to the user that asks for their preferences information
(name, whether they want to print in color, etc.), and then write a text
file.
 
I like this idea best.

Throw it on the CD... Require them to insert CD first time or whatever and
your program checks to see if it is there using
the fileinfo class and then if not copies it from CD to disk..

Seems the easiest although setup may have a way.. I don't know

Shane
 
I think I'm going to try including the .mdb file with the program, but in a sub-folder. The program will check to see if the .mdb file exists where it should during normal operation, and if it isn't there (i.e. they just installed the program), it will copy the .mdb file from the sub-directory and put it in the proper place before it calls it for the first time

Hopefully, it will all work out. It still seems silly that there isn't a simple setting in vb.net that checks whether or not a file has been modified since the last version update, and to leave it alone if the user has modified it.

Juggle

----- SStory wrote: ----

I like this idea best

Throw it on the CD... Require them to insert CD first time or whatever an
your program checks to see if it is there usin
the fileinfo class and then if not copies it from CD to disk.

Seems the easiest although setup may have a way.. I don't kno

Shan
 
There may be... I haven't been using it enough to do formal updates yet.
Simple updates are send them the new exe and they copy over the old one.
Pretty neat, but...

Maybe if there is a way someone at Microsoft or some other guru will respond
and tell us both.
Sorry I don't know more.

Shane

Juggler said:
I think I'm going to try including the .mdb file with the program, but in
a sub-folder. The program will check to see if the .mdb file exists where it
should during normal operation, and if it isn't there (i.e. they just
installed the program), it will copy the .mdb file from the sub-directory
and put it in the proper place before it calls it for the first time.
Hopefully, it will all work out. It still seems silly that there isn't a
simple setting in vb.net that checks whether or not a file has been modified
since the last version update, and to leave it alone if the user has
modified it.
 
Look at:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/f
ile_versioning_rules.asp

I think your MDB file would be an unversioned file and so:

Nonversioned Files are User Data—If the Modified date is later than the
Create date for the file on the computer, do not install the file because
user customizations would be deleted. If the Modified and Create dates are
the same, install the file. If the Create date is later than the Modified
date, the file is considered unmodified, install the file.

So, I think you probably get the desired behavior for free. As always test
this stuff carefully before shipping so you don't accidentally clobber a
customer's business data.

---
David Guyer - VBQA Deployment Testing
This posting is provided "AS IS" with no warranties, and confers no rights.
--------------------
<OhA2Byv#[email protected]>
<[email protected]>
<#xfXvGw#[email protected]>
 
Back
Top