http://bugs.winehq.org/show_bug.cgi?id=22304
Summary: MSI file overwrite property Product: Wine Version: unspecified Platform: x86 URL: http://www.securenetterm.com OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msi AssignedTo: wine-bugs@winehq.org ReportedBy: support@securenetterm.com
The WINE MSI does not honor the Installshield file "never overwrite" property.
In many applications, user perferences are saved in application specific control files contained in unique OS specific user locations. These files contain unique user specific values and should not be overwitten or deleted when an application is uninstalled, then installed again.
In Installshield, an option is given to mark these files not to be overwritten. This is passed to the Microsoft msi installer.
In the WINE version of MSI, the override flags are ignored, thus destoying all user specific information.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #1 from Austin English austinenglish@gmail.com 2010-04-07 13:03:08 --- A testcase would help.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #2 from Dmitry Timoshkov dmitry@codeweavers.com 2010-04-07 21:50:37 --- Please specify Wine version.
http://bugs.winehq.org/show_bug.cgi?id=22304
Kenneth Robinette support@securenetterm.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Version|unspecified |1.1.42
--- Comment #3 from Kenneth Robinette support@securenetterm.com 2010-04-08 06:19:30 --- (In reply to comment #1)
A testcase would help.
From what I see, any file with a no overwrite property will be ignored by the
WINE MSI program. I suspect WINE MSI ignores all file properties.
http://bugs.winehq.org/show_bug.cgi?id=22304
Hans Leidekker hans@meelstraat.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |hans@meelstraat.net
--- Comment #4 from Hans Leidekker hans@meelstraat.net 2010-04-08 06:54:31 ---
In Installshield, an option is given to mark these files not to be overwritten. This is passed to the Microsoft msi installer.
What is passed to msi, and how?
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #5 from Kenneth Robinette support@securenetterm.com 2010-04-08 07:14:44 --- (In reply to comment #4)
In Installshield, an option is given to mark these files not to be overwritten. This is passed to the Microsoft msi installer.
What is passed to msi, and how?
Don't know. I don't work for Installshield, nor any of the vendors that have acquired Installshield. Nor do I have source to the Microsoft MSI.
As a user of Installshield, I simply right click on a file, select property from the popup menu, select the Advanced tab on the popup dialog, then select the "Never Overwrite" option.
I suspect all Windows based installers support this option, but can only state what Installshield does since that is the only installer we use.
This option is critical to most professional applications that allow for user preferences file(s).
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #6 from Kenneth Robinette support@securenetterm.com 2010-04-30 10:23:25 --- Created an attachment (id=27635) --> (http://bugs.winehq.org/attachment.cgi?id=27635) Installshield 11 Documentation on file properties
Installshiled 11 documentation on file properties as it relates to the never overwrite file property.
The "never overwrite" option is commonly used for individual user .ini and .xml files that define user preferences. These files are commonly stored in:
Windows 98 C:\WINDOWS\Profiles<user>\Application Data\InterSoft Common Windows XP C:\Documents and Settings<user>\Application Data\InterSoft Common Windows Vista C:\Users<user>\AppData\Roaming\InterSoft Common Windows 7 C:\Users<user>\AppData\Roaming\InterSoft Common
The term <user> is unique for each individual that has been assigned a userid on the workstation. It is common for these files to remain after an update sequence of Unistall and Install.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #7 from Kenneth Robinette support@securenetterm.com 2010-04-30 11:21:29 --- (In reply to comment #6)
Created an attachment (id=27635)
--> (http://bugs.winehq.org/attachment.cgi?id=27635) [details]
Installshield 11 Documentation on file properties Installshiled 11 documentation on file properties as it relates to the never overwrite file property. The "never overwrite" option is commonly used for individual user .ini and .xml files that define user preferences. These files are commonly stored in: Windows 98 C:\WINDOWS\Profiles<user>\Application Data\InterSoft Common Windows XP C:\Documents and Settings<user>\Application Data\InterSoft Common Windows Vista C:\Users<user>\AppData\Roaming\InterSoft Common Windows 7 C:\Users<user>\AppData\Roaming\InterSoft Common The term <user> is unique for each individual that has been assigned a userid on the workstation. It is common for these files to remain after an update sequence of Unistall and Install.
In addition, http://msdn.microsoft.com/en-us/library/aa368007.aspx documents file attributes in the msi Components Table, Attributes field. These are:
msidbComponentAttributesNeverOverwrite 0x0080 msidbComponentAttributesPermanent 0x0010
which means never overwrite this component and do not remove in an uninstall. It would appear these are the flags that need to be examined by the WINE MSI install/uninstall software.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #8 from Hans Leidekker hans@meelstraat.net 2010-06-02 03:34:13 --- Created an attachment (id=28511) --> (http://bugs.winehq.org/attachment.cgi?id=28511) msi: Honor msidbComponentAttributesNeverOverwrite.
Can you try this patch? It should apply with some offset.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #9 from Kenneth Robinette support@securenetterm.com 2010-06-02 06:44:12 --- (In reply to comment #8)
Created an attachment (id=28511)
--> (http://bugs.winehq.org/attachment.cgi?id=28511) [details]
msi: Honor msidbComponentAttributesNeverOverwrite. Can you try this patch? It should apply with some offset.
That appears to work!
I patched the wine-1.2-rc2 source, dlls/msi/action.c, by manually inserting the patch at line 2117.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #10 from Kenneth Robinette support@securenetterm.com 2010-06-15 07:11:04 --- (In reply to comment #9)
(In reply to comment #8)
Created an attachment (id=28511)
--> (http://bugs.winehq.org/attachment.cgi?id=28511) [details] [details]
msi: Honor msidbComponentAttributesNeverOverwrite. Can you try this patch? It should apply with some offset.
That appears to work! I patched the wine-1.2-rc2 source, dlls/msi/action.c, by manually inserting the patch at line 2117.
When will this patch be applied?
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #11 from Hans Leidekker hans@meelstraat.net 2010-06-15 07:32:08 ---
When will this patch be applied?
After the freeze. This solution is probably not general enough, I need to write some test cases to find out.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #12 from Kenneth Robinette support@securenetterm.com 2010-06-15 07:58:21 --- (In reply to comment #11)
When will this patch be applied?
After the freeze. This solution is probably not general enough, I need to write some test cases to find out.
In my humble opinion your current patch adds a LOT of value and should be allowed to be included in the WINE 1.2 release. It may not be the ultimate solution, but it does solve a very important and critical problem.
Currently user specific files are always overwritten each time a program is updated using msi.
http://bugs.winehq.org/show_bug.cgi?id=22304
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |FIXED
--- Comment #13 from Austin English austinenglish@gmail.com 2010-11-12 12:46:10 CST --- Should be fixed by http://source.winehq.org/git/wine.git/?a=commitdiff;h=b112d7712608a7d3261172...
http://bugs.winehq.org/show_bug.cgi?id=22304
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #14 from Alexandre Julliard julliard@winehq.org 2010-11-12 13:33:25 CST --- Closing bugs fixed in 1.3.7.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #15 from Kenneth Robinette support@securenetterm.com 2010-11-12 14:29:13 CST --- (In reply to comment #14)
Closing bugs fixed in 1.3.7.
The problem still exists in release 1.3.7.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #16 from Hans Leidekker hans@meelstraat.net 2010-11-12 14:35:28 CST --- Please attach a +msi trace.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #17 from Kenneth Robinette support@securenetterm.com 2010-11-12 16:19:36 CST --- (In reply to comment #16)
Please attach a +msi trace.
An +msi trace of what? Installshield? I am running Installshield to install a product that I know has user configuration files that has the msi property of never overwrite. At the end of the install I check the user configuration files and they have been overwritten. I run same process on Windows XP and the user files are not overwritten.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #18 from Kenneth Robinette support@securenetterm.com 2010-11-12 18:30:48 CST --- Created an attachment (id=31886) --> (http://bugs.winehq.org/attachment.cgi?id=31886) Trace of Installshield msi installation
Unzip to log.txt
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #19 from Kenneth Robinette support@securenetterm.com 2010-11-12 18:31:04 CST --- Attached is log.txt which is a trace of an Installshield based installation of SNetTerm. There are three control files (known_hosts, SecureCommon.ini and SecureCommon.xml) which should be placed in the INSTALLDIR and in the AppDataFolder (which translates to c:/users/zkrr01/Application Data/InterSoft Common) and should never overwrite corresponding existing files in the AppDataFolder.
When completed, the three control files were placed in the INSTALLDIR and they also wrote over the existing files contained in the AppDataFolder (which should not have happened).
The three control files destined for the AppDataFilder had the "never overwrite" property.
I also ran the same Installshield installation routine on a Microsoft XP system and the controls files in AppDataFolder were not overwritten.
Perhaps the fact there are multiple control files with the "never overwrite" property is related to the failure.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #20 from Kenneth Robinette support@securenetterm.com 2010-11-13 08:40:20 CST --- Created an attachment (id=31902) --> (http://bugs.winehq.org/attachment.cgi?id=31902) Trace of Installshield msi uninstall
Unzip to uninstall.log
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #21 from Kenneth Robinette support@securenetterm.com 2010-11-13 08:43:04 CST --- (In reply to comment #20)
Created an attachment (id=31902)
--> (http://bugs.winehq.org/attachment.cgi?id=31902) [details]
Trace of Installshield msi uninstall Unzip to uninstall.log
In addition to the msi logic not honoring the file property "never overwrite", the msi unistall logic is not honoring the file "Permanent" property. The trace uninstall.log shows the file netterm.ini which has the "Permanent" property is being removed when it should not have been removed.
http://bugs.winehq.org/show_bug.cgi?id=22304
Hans Leidekker hans@meelstraat.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #28511|0 |1 is obsolete| |
--- Comment #22 from Hans Leidekker hans@meelstraat.net 2010-11-14 04:16:26 CST --- Created an attachment (id=31916) --> (http://bugs.winehq.org/attachment.cgi?id=31916) msi: Check component attributes before extracting the cabinet.
Give this a try.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #23 from Kenneth Robinette support@securenetterm.com 2010-11-15 13:36:56 CST --- (In reply to comment #22)
Created an attachment (id=31916)
--> (http://bugs.winehq.org/attachment.cgi?id=31916) [details]
msi: Check component attributes before extracting the cabinet. Give this a try.
That appeared to fix both the overwrite and the permenant problem on the control file(s) which had the permenant/overwrite flags set.
The strange thing I noticed this time is that when I ran the Wine unistaller, it did not remove the files from the install directory and did not remove the entry for the proram in:
/hkey/local_machine/software/microsoft/windows/currentversion/uninstall
which is required to be able to install again. Perhaps I was just to tired and thought this happed last time, but in any case, it is not doing it now.
http://bugs.winehq.org/show_bug.cgi?id=22304
--- Comment #24 from Hans Leidekker hans@meelstraat.net 2010-11-16 13:59:07 CST --- Fixed by b1b32529635b4c5ad89e675e291b00f92dc66844.
Please open a new bug for the uninstall problem.
http://bugs.winehq.org/show_bug.cgi?id=22304
Hans Leidekker hans@meelstraat.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |b1b32529635b4c5ad89e675e291 | |b00f92dc66844