@@ -137,7 +137,7 @@ static UINT MSI_OpenProductW(LPCWSTR szProduct, MSIPACKAGE **package)
137137 goto done ;
138138 }
139139
140- r = MSI_OpenPackageW (path , package );
140+ r = MSI_OpenPackageW (path , 0 , package );
141141
142142done :
143143 RegCloseKey (props );
@@ -236,7 +236,9 @@ UINT WINAPI MsiInstallProductA(LPCSTR szPackagePath, LPCSTR szCommandLine)
236236UINT WINAPI MsiInstallProductW (LPCWSTR szPackagePath , LPCWSTR szCommandLine )
237237{
238238 MSIPACKAGE * package = NULL ;
239- UINT r ;
239+ const WCHAR * reinstallmode ;
240+ DWORD options = 0 ;
241+ UINT r , len ;
240242
241243 TRACE ("%s %s\n" ,debugstr_w (szPackagePath ), debugstr_w (szCommandLine ));
242244
@@ -246,7 +248,20 @@ UINT WINAPI MsiInstallProductW(LPCWSTR szPackagePath, LPCWSTR szCommandLine)
246248 if (!* szPackagePath )
247249 return ERROR_PATH_NOT_FOUND ;
248250
249- r = MSI_OpenPackageW ( szPackagePath , & package );
251+ reinstallmode = msi_get_command_line_option (szCommandLine , szReinstallMode , & len );
252+ if (reinstallmode )
253+ {
254+ while (len > 0 )
255+ {
256+ if (reinstallmode [-- len ] == 'v' || reinstallmode [len ] == 'V' )
257+ {
258+ options |= WINE_OPENPACKAGEFLAGS_RECACHE ;
259+ break ;
260+ }
261+ }
262+ }
263+
264+ r = MSI_OpenPackageW ( szPackagePath , options , & package );
250265 if (r == ERROR_SUCCESS )
251266 {
252267 r = MSI_InstallPackage ( package , szPackagePath , szCommandLine );
@@ -732,7 +747,7 @@ UINT WINAPI MsiDetermineApplicablePatchesW(LPCWSTR szProductPackagePath,
732747
733748 TRACE ("%s, %u, %p\n" , debugstr_w (szProductPackagePath ), cPatchInfo , pPatchInfo );
734749
735- r = MSI_OpenPackageW ( szProductPackagePath , & package );
750+ r = MSI_OpenPackageW ( szProductPackagePath , 0 , & package );
736751 if (r != ERROR_SUCCESS )
737752 {
738753 ERR ("failed to open package %u\n" , r );
@@ -810,7 +825,7 @@ static UINT open_package( const WCHAR *product, const WCHAR *usersid,
810825 if (GetFileAttributesW ( sourcepath ) == INVALID_FILE_ATTRIBUTES )
811826 return ERROR_INSTALL_SOURCE_ABSENT ;
812827
813- return MSI_OpenPackageW ( sourcepath , package );
828+ return MSI_OpenPackageW ( sourcepath , 0 , package );
814829}
815830
816831UINT WINAPI MsiDeterminePatchSequenceW ( LPCWSTR product , LPCWSTR usersid ,
@@ -4027,7 +4042,7 @@ UINT WINAPI MsiReinstallFeatureW( LPCWSTR szProduct, LPCWSTR szFeature, DWORD dw
40274042 strcatW ( sourcepath , filename );
40284043
40294044 if (dwReinstallMode & REINSTALLMODE_PACKAGE )
4030- r = MSI_OpenPackageW ( sourcepath , & package );
4045+ r = MSI_OpenPackageW ( sourcepath , 0 , & package );
40314046 else
40324047 r = MSI_OpenProductW ( szProduct , & package );
40334048
0 commit comments