Jérôme Gardou : msi: Remove read-only bit when copying the package file.

Alexandre Julliard julliard at winehq.org
Tue Feb 16 16:03:18 CST 2021


Module: wine
Branch: master
Commit: e830975806df9ef283c89f7153b06b145dfb2cec
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=e830975806df9ef283c89f7153b06b145dfb2cec

Author: Jérôme Gardou <jerome.gardou at gmail.com>
Date:   Fri Feb 12 14:46:56 2021 +0100

msi: Remove read-only bit when copying the package file.

CopyFileW also copies the file attributes, and the copy will be opened with
write access later on.

Signed-off-by: Jérôme Gardou <jerome.gardou at reactos.org>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msi/package.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index 25e22f040a4..05f122fb545 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1371,6 +1371,8 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
         r = get_local_package( db, localfile );
         if (r != ERROR_SUCCESS || GetFileAttributesW( localfile ) == INVALID_FILE_ATTRIBUTES)
         {
+            DWORD localfile_attr;
+
             r = msi_create_empty_local_file( localfile, L".msi" );
             if (r != ERROR_SUCCESS)
             {
@@ -1387,6 +1389,11 @@ UINT MSI_OpenPackageW(LPCWSTR szPackage, DWORD dwOptions, MSIPACKAGE **pPackage)
                 return r;
             }
             delete_on_close = TRUE;
+
+            /* Remove read-only bit, we are opening it with write access in MSI_OpenDatabaseW below. */
+            localfile_attr = GetFileAttributesW( localfile );
+            if (localfile_attr & FILE_ATTRIBUTE_READONLY)
+                SetFileAttributesW( localfile, localfile_attr & ~FILE_ATTRIBUTE_READONLY);
         }
         else if (dwOptions & WINE_OPENPACKAGEFLAGS_RECACHE)
         {




More information about the wine-cvs mailing list