Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
b5e3e19a
Commit
b5e3e19a
authored
Dec 14, 2008
by
James Hawkins
Committed by
Alexandre Julliard
Dec 15, 2008
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
msi: Add the ability to query a specific context for install properties.
parent
880b9199
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
39 additions
and
78 deletions
+39
-78
action.c
dlls/msi/action.c
+4
-16
msi.c
dlls/msi/msi.c
+18
-39
msipriv.h
dlls/msi/msipriv.h
+2
-3
registry.c
dlls/msi/registry.c
+15
-20
No files found.
dlls/msi/action.c
View file @
b5e3e19a
...
@@ -4158,19 +4158,10 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
...
@@ -4158,19 +4158,10 @@ static UINT ACTION_RegisterProduct(MSIPACKAGE *package)
if
(
rc
!=
ERROR_SUCCESS
)
if
(
rc
!=
ERROR_SUCCESS
)
return
rc
;
return
rc
;
if
(
package
->
Context
==
MSIINSTALLCONTEXT_MACHINE
)
rc
=
MSIREG_OpenInstallProps
(
package
->
ProductCode
,
package
->
Context
,
{
NULL
,
&
props
,
TRUE
);
rc
=
MSIREG_OpenInstallProps
(
package
->
ProductCode
,
szLocalSid
,
&
props
,
TRUE
);
if
(
rc
!=
ERROR_SUCCESS
)
if
(
rc
!=
ERROR_SUCCESS
)
goto
done
;
goto
done
;
}
else
{
rc
=
MSIREG_OpenCurrentUserInstallProps
(
package
->
ProductCode
,
&
props
,
TRUE
);
if
(
rc
!=
ERROR_SUCCESS
)
goto
done
;
}
msi_make_package_local
(
package
,
props
);
msi_make_package_local
(
package
,
props
);
...
@@ -4428,11 +4419,8 @@ static UINT ACTION_RegisterUser(MSIPACKAGE *package)
...
@@ -4428,11 +4419,8 @@ static UINT ACTION_RegisterUser(MSIPACKAGE *package)
if
(
!
productid
)
if
(
!
productid
)
return
ERROR_SUCCESS
;
return
ERROR_SUCCESS
;
if
(
package
->
Context
==
MSIINSTALLCONTEXT_MACHINE
)
rc
=
MSIREG_OpenInstallProps
(
package
->
ProductCode
,
package
->
Context
,
rc
=
MSIREG_OpenInstallProps
(
package
->
ProductCode
,
szLocalSid
,
&
hkey
,
TRUE
);
NULL
,
&
hkey
,
TRUE
);
else
rc
=
MSIREG_OpenCurrentUserInstallProps
(
package
->
ProductCode
,
&
hkey
,
TRUE
);
if
(
rc
!=
ERROR_SUCCESS
)
if
(
rc
!=
ERROR_SUCCESS
)
goto
end
;
goto
end
;
...
...
dlls/msi/msi.c
View file @
b5e3e19a
...
@@ -107,12 +107,7 @@ static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package)
...
@@ -107,12 +107,7 @@ static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package)
if
(
r
!=
ERROR_SUCCESS
)
if
(
r
!=
ERROR_SUCCESS
)
return
r
;
return
r
;
if
(
context
==
MSIINSTALLCONTEXT_MACHINE
)
r
=
MSIREG_OpenInstallProps
(
szProduct
,
context
,
NULL
,
&
props
,
FALSE
);
r
=
MSIREG_OpenInstallProps
(
szProduct
,
szLocalSid
,
&
props
,
FALSE
);
else
if
(
context
==
MSIINSTALLCONTEXT_USERMANAGED
||
context
==
MSIINSTALLCONTEXT_USERUNMANAGED
)
r
=
MSIREG_OpenCurrentUserInstallProps
(
szProduct
,
&
props
,
FALSE
);
if
(
r
!=
ERROR_SUCCESS
)
if
(
r
!=
ERROR_SUCCESS
)
return
ERROR_UNKNOWN_PRODUCT
;
return
ERROR_UNKNOWN_PRODUCT
;
...
@@ -406,11 +401,8 @@ static UINT msi_open_package(LPCWSTR product, MSIINSTALLCONTEXT context,
...
@@ -406,11 +401,8 @@ static UINT msi_open_package(LPCWSTR product, MSIINSTALLCONTEXT context,
static
const
WCHAR
szLocalPackage
[]
=
{
static
const
WCHAR
szLocalPackage
[]
=
{
'L'
,
'o'
,
'c'
,
'a'
,
'l'
,
'P'
,
'a'
,
'c'
,
'k'
,
'a'
,
'g'
,
'e'
,
0
};
'L'
,
'o'
,
'c'
,
'a'
,
'l'
,
'P'
,
'a'
,
'c'
,
'k'
,
'a'
,
'g'
,
'e'
,
0
};
if
(
context
==
MSIINSTALLCONTEXT_MACHINE
)
r
=
MSIREG_OpenInstallProps
(
product
,
szLocalSid
,
&
props
,
FALSE
);
else
r
=
MSIREG_OpenCurrentUserInstallProps
(
product
,
&
props
,
FALSE
);
r
=
MSIREG_OpenInstallProps
(
product
,
context
,
NULL
,
&
props
,
FALSE
);
if
(
r
!=
ERROR_SUCCESS
)
if
(
r
!=
ERROR_SUCCESS
)
return
ERROR_BAD_CONFIGURATION
;
return
ERROR_BAD_CONFIGURATION
;
...
@@ -693,12 +685,12 @@ static LPWSTR msi_reg_get_value(HKEY hkey, LPCWSTR name, DWORD *type)
...
@@ -693,12 +685,12 @@ static LPWSTR msi_reg_get_value(HKEY hkey, LPCWSTR name, DWORD *type)
static
UINT
MSI_GetProductInfo
(
LPCWSTR
szProduct
,
LPCWSTR
szAttribute
,
static
UINT
MSI_GetProductInfo
(
LPCWSTR
szProduct
,
LPCWSTR
szAttribute
,
awstring
*
szValue
,
LPDWORD
pcchValueBuf
)
awstring
*
szValue
,
LPDWORD
pcchValueBuf
)
{
{
MSIINSTALLCONTEXT
context
=
MSIINSTALLCONTEXT_USERUNMANAGED
;
UINT
r
=
ERROR_UNKNOWN_PROPERTY
;
UINT
r
=
ERROR_UNKNOWN_PROPERTY
;
HKEY
prodkey
,
userdata
,
source
;
HKEY
prodkey
,
userdata
,
source
;
LPWSTR
val
=
NULL
;
LPWSTR
val
=
NULL
;
WCHAR
squished_pc
[
GUID_SIZE
];
WCHAR
squished_pc
[
GUID_SIZE
];
WCHAR
packagecode
[
GUID_SIZE
];
WCHAR
packagecode
[
GUID_SIZE
];
BOOL
classes
=
FALSE
;
BOOL
badconfig
=
FALSE
;
BOOL
badconfig
=
FALSE
;
LONG
res
;
LONG
res
;
DWORD
save
,
type
=
REG_NONE
;
DWORD
save
,
type
=
REG_NONE
;
...
@@ -729,13 +721,10 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
...
@@ -729,13 +721,10 @@ static UINT MSI_GetProductInfo(LPCWSTR szProduct, LPCWSTR szAttribute,
(
r
=
MSIREG_OpenProductKey
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
(
r
=
MSIREG_OpenProductKey
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
&
prodkey
,
FALSE
))
==
ERROR_SUCCESS
)
&
prodkey
,
FALSE
))
==
ERROR_SUCCESS
)
{
{
c
lasses
=
TRU
E
;
c
ontext
=
MSIINSTALLCONTEXT_MACHIN
E
;
}
}
if
(
classes
)
MSIREG_OpenInstallProps
(
szProduct
,
context
,
NULL
,
&
userdata
,
FALSE
);
MSIREG_OpenInstallProps
(
szProduct
,
szLocalSid
,
&
userdata
,
FALSE
);
else
MSIREG_OpenCurrentUserInstallProps
(
szProduct
,
&
userdata
,
FALSE
);
if
(
!
lstrcmpW
(
szAttribute
,
INSTALLPROPERTY_HELPLINKW
)
||
if
(
!
lstrcmpW
(
szAttribute
,
INSTALLPROPERTY_HELPLINKW
)
||
!
lstrcmpW
(
szAttribute
,
INSTALLPROPERTY_HELPTELEPHONEW
)
||
!
lstrcmpW
(
szAttribute
,
INSTALLPROPERTY_HELPTELEPHONEW
)
||
...
@@ -1038,15 +1027,17 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
...
@@ -1038,15 +1027,17 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
if
(
dwContext
==
MSIINSTALLCONTEXT_MACHINE
&&
szUserSid
)
if
(
dwContext
==
MSIINSTALLCONTEXT_MACHINE
&&
szUserSid
)
return
ERROR_INVALID_PARAMETER
;
return
ERROR_INVALID_PARAMETER
;
/* FIXME: dwContext is provided, no need to search for it */
MSIREG_OpenProductKey
(
szProductCode
,
MSIINSTALLCONTEXT_USERMANAGED
,
MSIREG_OpenProductKey
(
szProductCode
,
MSIINSTALLCONTEXT_USERMANAGED
,
&
managed
,
FALSE
);
&
managed
,
FALSE
);
MSIREG_OpenProductKey
(
szProductCode
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSIREG_OpenProductKey
(
szProductCode
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
&
prod
,
FALSE
);
&
prod
,
FALSE
);
MSIREG_OpenInstallProps
(
szProductCode
,
dwContext
,
NULL
,
&
props
,
FALSE
);
if
(
dwContext
==
MSIINSTALLCONTEXT_USERUNMANAGED
)
if
(
dwContext
==
MSIINSTALLCONTEXT_USERUNMANAGED
)
{
{
package
=
INSTALLPROPERTY_LOCALPACKAGEW
;
package
=
INSTALLPROPERTY_LOCALPACKAGEW
;
MSIREG_OpenCurrentUserInstallProps
(
szProductCode
,
&
props
,
FALSE
);
if
(
!
props
&&
!
prod
)
if
(
!
props
&&
!
prod
)
goto
done
;
goto
done
;
...
@@ -1054,7 +1045,6 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
...
@@ -1054,7 +1045,6 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
else
if
(
dwContext
==
MSIINSTALLCONTEXT_USERMANAGED
)
else
if
(
dwContext
==
MSIINSTALLCONTEXT_USERMANAGED
)
{
{
package
=
managed_local_package
;
package
=
managed_local_package
;
MSIREG_OpenCurrentUserInstallProps
(
szProductCode
,
&
props
,
FALSE
);
if
(
!
props
&&
!
managed
)
if
(
!
props
&&
!
managed
)
goto
done
;
goto
done
;
...
@@ -1062,7 +1052,6 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
...
@@ -1062,7 +1052,6 @@ UINT WINAPI MsiGetProductInfoExW(LPCWSTR szProductCode, LPCWSTR szUserSid,
else
if
(
dwContext
==
MSIINSTALLCONTEXT_MACHINE
)
else
if
(
dwContext
==
MSIINSTALLCONTEXT_MACHINE
)
{
{
package
=
INSTALLPROPERTY_LOCALPACKAGEW
;
package
=
INSTALLPROPERTY_LOCALPACKAGEW
;
MSIREG_OpenInstallProps
(
szProductCode
,
szLocalSid
,
&
props
,
FALSE
);
MSIREG_OpenProductKey
(
szProductCode
,
dwContext
,
&
classes
,
FALSE
);
MSIREG_OpenProductKey
(
szProductCode
,
dwContext
,
&
classes
,
FALSE
);
if
(
!
props
&&
!
classes
)
if
(
!
props
&&
!
classes
)
...
@@ -1373,11 +1362,7 @@ static BOOL msi_comp_find_package(LPCWSTR prodcode, MSIINSTALLCONTEXT context)
...
@@ -1373,11 +1362,7 @@ static BOOL msi_comp_find_package(LPCWSTR prodcode, MSIINSTALLCONTEXT context)
'M'
,
'a'
,
'n'
,
'a'
,
'g'
,
'e'
,
'd'
,
'L'
,
'o'
,
'c'
,
'a'
,
'l'
,
'P'
,
'a'
,
'c'
,
'k'
,
'a'
,
'g'
,
'e'
,
0
'M'
,
'a'
,
'n'
,
'a'
,
'g'
,
'e'
,
'd'
,
'L'
,
'o'
,
'c'
,
'a'
,
'l'
,
'P'
,
'a'
,
'c'
,
'k'
,
'a'
,
'g'
,
'e'
,
0
};
};
if
(
context
==
MSIINSTALLCONTEXT_MACHINE
)
r
=
MSIREG_OpenInstallProps
(
prodcode
,
context
,
NULL
,
&
hkey
,
FALSE
);
r
=
MSIREG_OpenInstallProps
(
prodcode
,
szLocalSid
,
&
hkey
,
FALSE
);
else
r
=
MSIREG_OpenCurrentUserInstallProps
(
prodcode
,
&
hkey
,
FALSE
);
if
(
r
!=
ERROR_SUCCESS
)
if
(
r
!=
ERROR_SUCCESS
)
return
FALSE
;
return
FALSE
;
...
@@ -1491,9 +1476,9 @@ INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct)
...
@@ -1491,9 +1476,9 @@ INSTALLSTATE WINAPI MsiQueryProductStateA(LPCSTR szProduct)
INSTALLSTATE
WINAPI
MsiQueryProductStateW
(
LPCWSTR
szProduct
)
INSTALLSTATE
WINAPI
MsiQueryProductStateW
(
LPCWSTR
szProduct
)
{
{
MSIINSTALLCONTEXT
context
=
MSIINSTALLCONTEXT_USERUNMANAGED
;
INSTALLSTATE
state
=
INSTALLSTATE_ADVERTISED
;
INSTALLSTATE
state
=
INSTALLSTATE_ADVERTISED
;
HKEY
prodkey
=
0
,
userdata
=
0
;
HKEY
prodkey
=
0
,
userdata
=
0
;
BOOL
user
=
TRUE
;
DWORD
val
;
DWORD
val
;
UINT
r
;
UINT
r
;
...
@@ -1515,21 +1500,12 @@ INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
...
@@ -1515,21 +1500,12 @@ INSTALLSTATE WINAPI MsiQueryProductStateW(LPCWSTR szProduct)
MSIREG_OpenProductKey
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
MSIREG_OpenProductKey
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
&
prodkey
,
FALSE
)
==
ERROR_SUCCESS
)
&
prodkey
,
FALSE
)
==
ERROR_SUCCESS
)
{
{
user
=
FALS
E
;
context
=
MSIINSTALLCONTEXT_MACHIN
E
;
}
}
if
(
user
)
r
=
MSIREG_OpenInstallProps
(
szProduct
,
context
,
NULL
,
&
userdata
,
FALSE
);
{
r
=
MSIREG_OpenCurrentUserInstallProps
(
szProduct
,
&
userdata
,
FALSE
);
if
(
r
!=
ERROR_SUCCESS
)
goto
done
;
}
else
{
r
=
MSIREG_OpenInstallProps
(
szProduct
,
szLocalSid
,
&
userdata
,
FALSE
);
if
(
r
!=
ERROR_SUCCESS
)
if
(
r
!=
ERROR_SUCCESS
)
goto
done
;
goto
done
;
}
if
(
!
msi_reg_get_val_dword
(
userdata
,
szWindowsInstaller
,
&
val
))
if
(
!
msi_reg_get_val_dword
(
userdata
,
szWindowsInstaller
,
&
val
))
goto
done
;
goto
done
;
...
@@ -1987,7 +1963,8 @@ static INSTALLSTATE MSI_GetComponentPath(LPCWSTR szProduct, LPCWSTR szComponent,
...
@@ -1987,7 +1963,8 @@ static INSTALLSTATE MSI_GetComponentPath(LPCWSTR szProduct, LPCWSTR szComponent,
state
=
INSTALLSTATE_ABSENT
;
state
=
INSTALLSTATE_ABSENT
;
if
((
MSIREG_OpenInstallProps
(
szProduct
,
szLocalSid
,
&
hkey
,
FALSE
)
==
ERROR_SUCCESS
||
if
((
MSIREG_OpenInstallProps
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
NULL
,
&
hkey
,
FALSE
)
==
ERROR_SUCCESS
||
MSIREG_OpenUserDataProductKey
(
szProduct
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSIREG_OpenUserDataProductKey
(
szProduct
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
NULL
,
&
hkey
,
FALSE
)
==
ERROR_SUCCESS
)
&&
NULL
,
&
hkey
,
FALSE
)
==
ERROR_SUCCESS
)
&&
msi_reg_get_val_dword
(
hkey
,
wininstaller
,
&
version
)
&&
msi_reg_get_val_dword
(
hkey
,
wininstaller
,
&
version
)
&&
...
@@ -2652,8 +2629,10 @@ static USERINFOSTATE MSI_GetUserInfo(LPCWSTR szProduct,
...
@@ -2652,8 +2629,10 @@ static USERINFOSTATE MSI_GetUserInfo(LPCWSTR szProduct,
return
USERINFOSTATE_UNKNOWN
;
return
USERINFOSTATE_UNKNOWN
;
}
}
if
(
MSIREG_OpenCurrentUserInstallProps
(
szProduct
,
&
props
,
FALSE
)
!=
ERROR_SUCCESS
&&
if
(
MSIREG_OpenInstallProps
(
szProduct
,
MSIINSTALLCONTEXT_USERUNMANAGED
,
MSIREG_OpenInstallProps
(
szProduct
,
szLocalSid
,
&
props
,
FALSE
)
!=
ERROR_SUCCESS
)
NULL
,
&
props
,
FALSE
)
!=
ERROR_SUCCESS
&&
MSIREG_OpenInstallProps
(
szProduct
,
MSIINSTALLCONTEXT_MACHINE
,
NULL
,
&
props
,
FALSE
)
!=
ERROR_SUCCESS
)
{
{
RegCloseKey
(
hkey
);
RegCloseKey
(
hkey
);
return
USERINFOSTATE_ABSENT
;
return
USERINFOSTATE_ABSENT
;
...
...
dlls/msi/msipriv.h
View file @
b5e3e19a
...
@@ -780,9 +780,8 @@ extern UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT d
...
@@ -780,9 +780,8 @@ extern UINT MSIREG_OpenUserDataProductKey(LPCWSTR szProduct, MSIINSTALLCONTEXT d
LPCWSTR
szUserSid
,
HKEY
*
key
,
BOOL
create
);
LPCWSTR
szUserSid
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenUserDataPatchKey
(
LPCWSTR
szPatch
,
MSIINSTALLCONTEXT
dwContext
,
extern
UINT
MSIREG_OpenUserDataPatchKey
(
LPCWSTR
szPatch
,
MSIINSTALLCONTEXT
dwContext
,
HKEY
*
key
,
BOOL
create
);
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenCurrentUserInstallProps
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenInstallProps
(
LPCWSTR
szProduct
,
MSIINSTALLCONTEXT
dwContext
,
extern
UINT
MSIREG_OpenInstallProps
(
LPCWSTR
szProduct
,
LPCWSTR
szUserSID
,
LPCWSTR
szUserSid
,
HKEY
*
key
,
BOOL
create
);
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenUpgradeCodesKey
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenUpgradeCodesKey
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenUserUpgradeCodesKey
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_OpenUserUpgradeCodesKey
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
);
extern
UINT
MSIREG_DeleteProductKey
(
LPCWSTR
szProduct
);
extern
UINT
MSIREG_DeleteProductKey
(
LPCWSTR
szProduct
);
...
...
dlls/msi/registry.c
View file @
b5e3e19a
...
@@ -871,10 +871,11 @@ UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext,
...
@@ -871,10 +871,11 @@ UINT MSIREG_OpenUserDataPatchKey(LPCWSTR szPatch, MSIINSTALLCONTEXT dwContext,
return
RegOpenKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
return
RegOpenKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
}
}
UINT
MSIREG_OpenInstallProps
(
LPCWSTR
szProduct
,
LPCWSTR
szUserSID
,
UINT
MSIREG_OpenInstallProps
(
LPCWSTR
szProduct
,
MSIINSTALLCONTEXT
dwContext
,
HKEY
*
key
,
BOOL
create
)
LPCWSTR
szUserSid
,
HKEY
*
key
,
BOOL
create
)
{
{
UINT
rc
;
UINT
rc
;
LPWSTR
usersid
;
WCHAR
squished_pc
[
GUID_SIZE
];
WCHAR
squished_pc
[
GUID_SIZE
];
WCHAR
keypath
[
0x200
];
WCHAR
keypath
[
0x200
];
...
@@ -883,22 +884,12 @@ UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, LPCWSTR szUserSID,
...
@@ -883,22 +884,12 @@ UINT MSIREG_OpenInstallProps(LPCWSTR szProduct, LPCWSTR szUserSID,
return
ERROR_FUNCTION_FAILED
;
return
ERROR_FUNCTION_FAILED
;
TRACE
(
"squished (%s)
\n
"
,
debugstr_w
(
squished_pc
));
TRACE
(
"squished (%s)
\n
"
,
debugstr_w
(
squished_pc
));
sprintfW
(
keypath
,
szInstallProperties_fmt
,
szUserSID
,
squished_pc
);
if
(
dwContext
==
MSIINSTALLCONTEXT_MACHINE
)
sprintfW
(
keypath
,
szInstallProperties_fmt
,
szLocalSid
,
squished_pc
);
if
(
create
)
else
if
(
szUserSid
)
rc
=
RegCreateKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
sprintfW
(
keypath
,
szInstallProperties_fmt
,
szUserSid
,
squished_pc
);
else
else
rc
=
RegOpenKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
{
return
rc
;
}
UINT
MSIREG_OpenCurrentUserInstallProps
(
LPCWSTR
szProduct
,
HKEY
*
key
,
BOOL
create
)
{
UINT
rc
;
LPWSTR
usersid
;
rc
=
get_user_sid
(
&
usersid
);
rc
=
get_user_sid
(
&
usersid
);
if
(
rc
!=
ERROR_SUCCESS
||
!
usersid
)
if
(
rc
!=
ERROR_SUCCESS
||
!
usersid
)
{
{
...
@@ -906,10 +897,14 @@ UINT MSIREG_OpenCurrentUserInstallProps(LPCWSTR szProduct, HKEY *key,
...
@@ -906,10 +897,14 @@ UINT MSIREG_OpenCurrentUserInstallProps(LPCWSTR szProduct, HKEY *key,
return
rc
;
return
rc
;
}
}
rc
=
MSIREG_OpenInstallProps
(
szProduct
,
usersid
,
key
,
create
);
sprintfW
(
keypath
,
szInstallProperties_fmt
,
usersid
,
squished_pc
);
LocalFree
(
usersid
);
LocalFree
(
usersid
);
return
rc
;
}
if
(
create
)
return
RegCreateKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
return
RegOpenKeyW
(
HKEY_LOCAL_MACHINE
,
keypath
,
key
);
}
}
UINT
MSIREG_DeleteUserDataProductKey
(
LPCWSTR
szProduct
)
UINT
MSIREG_DeleteUserDataProductKey
(
LPCWSTR
szProduct
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment