Author: cwittich
Date: Sat Aug 8 13:55:51 2009
New Revision: 42507
URL:
http://svn.reactos.org/svn/reactos?rev=42507&view=rev
Log:
sync msi with wine 1.1.27
Added:
trunk/reactos/dll/win32/msi/msi_Lt.rc (with props)
Modified:
trunk/reactos/dll/win32/msi/custom.c
trunk/reactos/dll/win32/msi/database.c
trunk/reactos/dll/win32/msi/dialog.c
trunk/reactos/dll/win32/msi/msi.rc
trunk/reactos/dll/win32/msi/msi_Bg.rc
trunk/reactos/dll/win32/msi/msi_Da.rc
trunk/reactos/dll/win32/msi/msi_De.rc
trunk/reactos/dll/win32/msi/msi_En.rc
trunk/reactos/dll/win32/msi/msi_Eo.rc
trunk/reactos/dll/win32/msi/msi_Es.rc
trunk/reactos/dll/win32/msi/msi_Fi.rc
trunk/reactos/dll/win32/msi/msi_Fr.rc
trunk/reactos/dll/win32/msi/msi_Hu.rc
trunk/reactos/dll/win32/msi/msi_It.rc
trunk/reactos/dll/win32/msi/msi_Ko.rc
trunk/reactos/dll/win32/msi/msi_Nl.rc
trunk/reactos/dll/win32/msi/msi_No.rc
trunk/reactos/dll/win32/msi/msi_Pl.rc
trunk/reactos/dll/win32/msi/msi_Pt.rc
trunk/reactos/dll/win32/msi/msi_Ro.rc
trunk/reactos/dll/win32/msi/msi_Ru.rc
trunk/reactos/dll/win32/msi/msi_Si.rc
trunk/reactos/dll/win32/msi/msi_Sv.rc
trunk/reactos/dll/win32/msi/msi_Tr.rc
trunk/reactos/dll/win32/msi/msi_Zh.rc
trunk/reactos/dll/win32/msi/msipriv.h
trunk/reactos/dll/win32/msi/msiquery.c
trunk/reactos/dll/win32/msi/msiserver.idl
trunk/reactos/dll/win32/msi/table.c
Modified: trunk/reactos/dll/win32/msi/custom.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/custom.c?rev…
==============================================================================
--- trunk/reactos/dll/win32/msi/custom.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/custom.c [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -851,6 +851,7 @@
msi_custom_action_info *info;
WCHAR package_path[MAX_PATH];
DWORD size;
+ UINT r;
static const WCHAR backslash[] = {'\\',0};
@@ -863,7 +864,9 @@
info = do_msidbCAConcurrentInstall(package, type, package_path, target, action);
- return wait_thread_handle(info);
+ r = wait_thread_handle(info);
+ release_custom_action_data( info );
+ return r;
}
static UINT HANDLE_CustomType1(MSIPACKAGE *package, LPCWSTR source,
@@ -888,7 +891,9 @@
info = do_msidbCustomActionTypeDll( package, type, tmp_file, target, action );
- return wait_thread_handle( info );
+ r = wait_thread_handle( info );
+ release_custom_action_data( info );
+ return r;
}
static UINT HANDLE_CustomType2(MSIPACKAGE *package, LPCWSTR source,
@@ -951,6 +956,7 @@
{
msi_custom_action_info *info;
MSIFILE *file;
+ UINT r;
TRACE("%s %s\n", debugstr_w(source), debugstr_w(target));
@@ -963,7 +969,9 @@
info = do_msidbCustomActionTypeDll( package, type, file->TargetPath, target,
action );
- return wait_thread_handle( info );
+ r = wait_thread_handle( info );
+ release_custom_action_data( info );
+ return r;
}
static UINT HANDLE_CustomType18(MSIPACKAGE *package, LPCWSTR source,
@@ -1167,9 +1175,7 @@
else
ERR("failed to create handle for %p\n", info->package );
- if (info->type & msidbCustomActionTypeAsync &&
- info->type & msidbCustomActionTypeContinue)
- release_custom_action_data( info );
+ release_custom_action_data( info );
return S_OK;
}
@@ -1226,13 +1232,16 @@
static UINT HANDLE_CustomType37_38(MSIPACKAGE *package, LPCWSTR source,
LPCWSTR target, const INT type, LPCWSTR action)
{
+ UINT r;
msi_custom_action_info *info;
TRACE("%s %s\n", debugstr_w(source), debugstr_w(target));
info = do_msidbCustomActionTypeScript( package, type, target, NULL, action );
- return wait_thread_handle( info );
+ r = wait_thread_handle( info );
+ release_custom_action_data( info );
+ return r;
}
static UINT HANDLE_CustomType5_6(MSIPACKAGE *package, LPCWSTR source,
@@ -1277,6 +1286,7 @@
info = do_msidbCustomActionTypeScript( package, type, bufferw, target, action );
r = wait_thread_handle( info );
+ release_custom_action_data( info );
done:
msi_free(bufferw);
@@ -1341,6 +1351,7 @@
info = do_msidbCustomActionTypeScript( package, type, bufferw, target, action );
r = wait_thread_handle( info );
+ release_custom_action_data( info );
done:
msi_free(bufferw);
@@ -1353,6 +1364,7 @@
{
msi_custom_action_info *info;
WCHAR *prop;
+ UINT r;
TRACE("%s %s\n", debugstr_w(source), debugstr_w(target));
@@ -1362,7 +1374,9 @@
info = do_msidbCustomActionTypeScript( package, type, prop, NULL, action );
msi_free(prop);
- return wait_thread_handle( info );
+ r = wait_thread_handle( info );
+ release_custom_action_data( info );
+ return r;
}
void ACTION_FinishCustomActions(const MSIPACKAGE* package)
Modified: trunk/reactos/dll/win32/msi/database.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/database.c?r…
==============================================================================
--- trunk/reactos/dll/win32/msi/database.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/database.c [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -41,11 +41,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(msi);
-DEFINE_GUID( CLSID_MsiDatabase, 0x000c1084, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
-DEFINE_GUID( CLSID_MsiPatch, 0x000c1086, 0x0000, 0x0000,
- 0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
-
/*
* .MSI file format
*
@@ -163,7 +158,8 @@
}
if ( !IsEqualGUID( &stat.clsid, &CLSID_MsiDatabase ) &&
- !IsEqualGUID( &stat.clsid, &CLSID_MsiPatch ) )
+ !IsEqualGUID( &stat.clsid, &CLSID_MsiPatch ) &&
+ !IsEqualGUID( &stat.clsid, &CLSID_MsiTransform ) )
{
ERR("storage GUID is not a MSI database GUID %s\n",
debugstr_guid(&stat.clsid) );
@@ -417,10 +413,16 @@
case 'i':
lstrcpyW(extra, type_notnull);
case 'I':
- if (len == 2)
+ if (len <= 2)
type = type_int;
+ else if (len == 4)
+ type = type_long;
else
- type = type_long;
+ {
+ WARN("invalid int width %u\n", len);
+ msi_free(columns);
+ return NULL;
+ }
break;
case 'v':
lstrcpyW(extra, type_notnull);
Modified: trunk/reactos/dll/win32/msi/dialog.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/dialog.c?rev…
==============================================================================
--- trunk/reactos/dll/win32/msi/dialog.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/dialog.c [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -171,7 +171,7 @@
static INT msi_dialog_scale_unit( msi_dialog *dialog, INT val )
{
- return (dialog->scale * val + 5) / 10;
+ return MulDiv( val, dialog->scale, 12 );
}
static msi_control *msi_dialog_find_control( msi_dialog *dialog, LPCWSTR name )
@@ -417,7 +417,7 @@
return NULL;
strcpyW( control->name, name );
- list_add_head( &dialog->controls, &control->entry );
+ list_add_tail( &dialog->controls, &control->entry );
control->handler = NULL;
control->update = NULL;
control->property = NULL;
@@ -2911,7 +2911,7 @@
if (hdc)
{
memset( &lf, 0, sizeof lf );
- lf.lfHeight = MulDiv(10, GetDeviceCaps(hdc, LOGPIXELSY), 72);
+ lf.lfHeight = MulDiv(12, GetDeviceCaps(hdc, LOGPIXELSY), 72);
strcpyW( lf.lfFaceName, szSansSerif );
hFont = CreateFontIndirectW(&lf);
if (hFont)
@@ -3002,37 +3002,34 @@
AdjustWindowRect( pos, style, FALSE );
}
-static BOOL msi_control_set_next( msi_control *control, msi_control *next )
-{
- return SetWindowPos( next->hwnd, control->hwnd, 0, 0, 0, 0,
- SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW |
- SWP_NOREPOSITION | SWP_NOSENDCHANGING | SWP_NOSIZE );
-}
-
-static UINT msi_dialog_set_tab_order( msi_dialog *dialog )
-{
- msi_control *control, *tab_next;
-
- LIST_FOR_EACH_ENTRY( control, &dialog->controls, msi_control, entry )
- {
- tab_next = msi_dialog_find_control( dialog, control->tabnext );
- if( !tab_next )
- continue;
- msi_control_set_next( control, tab_next );
- }
-
- return ERROR_SUCCESS;
-}
-
-static void msi_dialog_set_first_control( msi_dialog* dialog, LPCWSTR name )
-{
+static void msi_dialog_set_tab_order( msi_dialog *dialog, LPCWSTR first )
+{
+ struct list tab_chain;
msi_control *control;
-
- control = msi_dialog_find_control( dialog, name );
- if( control )
- dialog->hWndFocus = control->hwnd;
- else
- dialog->hWndFocus = NULL;
+ HWND prev = HWND_TOP;
+
+ list_init( &tab_chain );
+ if (!(control = msi_dialog_find_control( dialog, first ))) return;
+
+ dialog->hWndFocus = control->hwnd;
+ while (control)
+ {
+ list_remove( &control->entry );
+ list_add_tail( &tab_chain, &control->entry );
+ if (!control->tabnext) break;
+ control = msi_dialog_find_control( dialog, control->tabnext );
+ }
+
+ LIST_FOR_EACH_ENTRY( control, &tab_chain, msi_control, entry )
+ {
+ SetWindowPos( control->hwnd, prev, 0, 0, 0, 0,
+ SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW |
+ SWP_NOREPOSITION | SWP_NOSENDCHANGING | SWP_NOSIZE );
+ prev = control->hwnd;
+ }
+
+ /* put them back on the main list */
+ list_move_head( &dialog->controls, &tab_chain );
}
static LRESULT msi_dialog_oncreate( HWND hwnd, LPCREATESTRUCTW cs )
@@ -3082,8 +3079,7 @@
msi_dialog_build_font_list( dialog );
msi_dialog_fill_controls( dialog );
msi_dialog_evaluate_control_conditions( dialog );
- msi_dialog_set_tab_order( dialog );
- msi_dialog_set_first_control( dialog, MSI_RecordGetString( rec, 8 ) );
+ msi_dialog_set_tab_order( dialog, MSI_RecordGetString( rec, 8 ) );
msiobj_release( &rec->hdr );
return 0;
Modified: trunk/reactos/dll/win32/msi/msi.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi.rc?rev=4…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -38,6 +38,7 @@
#include "msi_Hu.rc"
#include "msi_It.rc"
#include "msi_Ko.rc"
+#include "msi_Lt.rc"
#include "msi_Nl.rc"
#include "msi_No.rc"
#include "msi_Pl.rc"
Modified: trunk/reactos/dll/win32/msi/msi_Bg.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Bg.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Bg.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Bg.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Da.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Da.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Da.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Da.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_DANISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_De.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_De.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_De.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_De.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
#pragma code_page(65001)
Modified: trunk/reactos/dll/win32/msi/msi_En.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_En.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_En.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_En.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Eo.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Eo.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Eo.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Eo.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_ESPERANTO, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Es.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Es.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Es.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Es.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Fi.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Fi.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Fi.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Fi.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_FINNISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Fr.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Fr.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Fr.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Fr.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,17 +18,23 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
+/* UTF-8 */
+#pragma code_page(65001)
+
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
{
- 4 "The specified installation package could not be opened. Please check the file
path and try again."
+ 4 "Le paquet d'installation spécifié n'a pu être ouvert. Veuillez
vérifier le chemin du fichier et réessayer."
5 "Le chemin %s est introuvable"
- 9 "insérez le disque %s"
- 10 "mauvais paramètres"
+ 9 "insérez le disque %s"
+ 10 "mauvais paramètres"
11 "saisissez le nom du dossier contenant %s"
- 12 "source d'installation pour la fonctionnalité manquante"
- 13 "lecteur réseau pour la fonctionnalité manquant"
- 14 "fonctionnalité depuis:"
- 15 "sélectionnez le dossier contenant %s"
+ 12 "source d'installation pour la fonctionnalité manquante"
+ 13 "lecteur réseau pour la fonctionnalité manquante"
+ 14 "fonctionnalité depuis :"
+ 15 "sélectionnez le dossier contenant %s"
}
+#pragma code_page(default)
Modified: trunk/reactos/dll/win32/msi/msi_Hu.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Hu.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Hu.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Hu.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_It.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_It.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_It.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_It.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Ko.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Ko.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Ko.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Ko.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Added: trunk/reactos/dll/win32/msi/msi_Lt.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Lt.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Lt.rc (added)
+++ trunk/reactos/dll/win32/msi/msi_Lt.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -1,0 +1,40 @@
+/*
+ * Lithuanian resources for MSI
+ *
+ * Copyright 2009 Aurimas Fišeras <aurimas(a)gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#include "windef.h"
+
+/* UTF-8 */
+#pragma code_page(65001)
+
+LANGUAGE LANG_LITHUANIAN, SUBLANG_NEUTRAL
+
+STRINGTABLE DISCARDABLE
+{
+ 4 "Nepavyko atverti nurodyto diegimo paketo. Patikrinkite failo keliÄ
ir mÄginkite dar kartÄ
."
+ 5 "kelias %s nerastas"
+ 9 "įdÄkite diskÄ
%s"
+ 10 "blogi parametrai"
+ 11 "įveskite aplankÄ
, kuris turi %s"
+ 12 "trūksta diegimo šaltinio komponentui"
+ 13 "trūksta tinklo disko komponentui"
+ 14 "komponentas iš:"
+ 15 "parinkite aplankÄ
, kuris turi %s"
+}
+#pragma code_page(default)
Propchange: trunk/reactos/dll/win32/msi/msi_Lt.rc
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/dll/win32/msi/msi_Nl.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Nl.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Nl.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Nl.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_No.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_No.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_No.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_No.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Pl.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Pl.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Pl.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Pl.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -19,6 +19,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Pt.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Pt.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Pt.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Pt.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
+#include "windef.h"
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
Modified: trunk/reactos/dll/win32/msi/msi_Ro.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Ro.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Ro.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Ro.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -17,6 +17,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
#pragma code_page(65001)
@@ -33,5 +35,4 @@
14 "caracteristicÄ de la:"
15 "selectaÈi fiÈierul care conÈine %s"
}
-
#pragma code_page(default)
Modified: trunk/reactos/dll/win32/msi/msi_Ru.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Ru.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Ru.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Ru.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,17 +18,23 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
+/* UTF-8 */
+#pragma code_page(65001)
+
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
{
- 4 "Óêàçàííûé ïàêåò íå ìîæåò áûòü îòêðûò. Ïðîâåðüòå ôàéë è ïîâòîðèòå ïîïûòêó."
- 5 "ïóòü %s íå íàéäåí"
- 9 "âñòàâüòå äèñê %s"
- 10 "íåâåðíûå ïàðàìåòðû"
- 11 "óêàæèòå êàòàëîã, ñîäåðæàùèé %s"
- 12 "èñòî÷íèê óñòàíîâêè äàííîé âîçìîæíîñòè íå óêàçàí"
- 13 "ñåòåâîé äèñê äëÿ äàííîé âîçìîæíîñòè íå óêàçàí"
- 14 "âîçìîæíîñòü èç:"
- 15 "âûáåðèòå êàòàëîã, ñîäåðæàùèé %s"
+ 4 "УказаннÑй Ð¿Ð°ÐºÐµÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¾ÑкÑÑÑ.
ÐÑовеÑÑÑе Ñайл и повÑоÑиÑе попÑÑкÑ."
+ 5 "пÑÑÑ %s не найден"
+ 9 "вÑÑавÑÑе диÑк %s"
+ 10 "невеÑнÑе паÑамеÑÑÑ"
+ 11 "ÑкажиÑе каÑалог, ÑодеÑжаÑий %s"
+ 12 "иÑÑоÑник ÑÑÑановки данной возможноÑÑи не
Ñказан"
+ 13 "ÑеÑевой диÑк Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ð¾Ð¹ возможноÑÑи не
Ñказан"
+ 14 "возможноÑÑÑ Ð¸Ð·:"
+ 15 "вÑбеÑиÑе каÑалог, ÑодеÑжаÑий %s"
}
+#pragma code_page(default)
Modified: trunk/reactos/dll/win32/msi/msi_Si.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Si.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Si.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Si.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
#pragma code_page(65001)
LANGUAGE LANG_SLOVENIAN, SUBLANG_DEFAULT
@@ -34,5 +36,4 @@
14 "funkcija z:"
15 "izberite mapo, ki vsebuje %s"
}
-
#pragma code_page(default)
Modified: trunk/reactos/dll/win32/msi/msi_Sv.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Sv.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Sv.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Sv.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Tr.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Tr.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Tr.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Tr.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -18,6 +18,8 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+#include "windef.h"
+
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
STRINGTABLE DISCARDABLE
Modified: trunk/reactos/dll/win32/msi/msi_Zh.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msi_Zh.rc?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msi_Zh.rc [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msi_Zh.rc [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -17,6 +17,8 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
+
+#include "windef.h"
/* Chinese text is encoded in UTF-8 */
#pragma code_page(65001)
@@ -50,5 +52,3 @@
14 "åè½ä¾èª:"
15 "é¸æå
å« %s çæªæ¡å¤¾"
}
-
-#pragma code_page(default)
Modified: trunk/reactos/dll/win32/msi/msipriv.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msipriv.h?re…
==============================================================================
--- trunk/reactos/dll/win32/msi/msipriv.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msipriv.h [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -604,6 +604,10 @@
DEFINE_GUID(CLSID_IWineMsiRemoteCustomAction,0xBA26E6FA,0x4F27,0x4f56,0x95,0x3A,0x3F,0x90,0x27,0x20,0x18,0xAA);
DEFINE_GUID(CLSID_IWineMsiRemotePackage,0x902b3592,0x9d08,0x4dfd,0xa5,0x93,0xd0,0x7c,0x52,0x54,0x64,0x21);
+
+DEFINE_GUID(CLSID_MsiTransform,
0x000c1082,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_MsiDatabase,
0x000c1084,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
+DEFINE_GUID(CLSID_MsiPatch,
0x000c1086,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
/* handle unicode/ascii output in the Msi* API functions */
typedef struct {
Modified: trunk/reactos/dll/win32/msi/msiquery.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msiquery.c?r…
==============================================================================
--- trunk/reactos/dll/win32/msi/msiquery.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msiquery.c [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -716,8 +716,6 @@
return 0;
}
-DEFINE_GUID( CLSID_MsiTransform, 0x000c1082, 0x0000, 0x0000,
0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
-
UINT MSI_DatabaseApplyTransformW( MSIDATABASE *db,
LPCWSTR szTransformFile, int iErrorCond )
{
Modified: trunk/reactos/dll/win32/msi/msiserver.idl
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/msiserver.id…
==============================================================================
--- trunk/reactos/dll/win32/msi/msiserver.idl [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/msiserver.idl [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -424,4 +424,4 @@
properties:
methods:
}
-}
+}
Modified: trunk/reactos/dll/win32/msi/table.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msi/table.c?rev=…
==============================================================================
--- trunk/reactos/dll/win32/msi/table.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msi/table.c [iso-8859-1] Sat Aug 8 13:55:51 2009
@@ -121,16 +121,23 @@
static UINT get_tablecolumns( MSIDATABASE *db,
LPCWSTR szTableName, MSICOLUMNINFO *colinfo, UINT *sz);
static void msi_free_colinfo( MSICOLUMNINFO *colinfo, UINT count );
+static UINT table_find_insert_idx (MSIVIEW *view, LPCWSTR name, INT *pidx);
static inline UINT bytes_per_column( MSIDATABASE *db, const MSICOLUMNINFO *col )
{
if( MSITYPE_IS_BINARY(col->type) )
return 2;
+
if( col->type & MSITYPE_STRING )
return db->bytes_per_strref;
- if( (col->type & 0xff) > 4 )
+
+ if( (col->type & 0xff) <= 2)
+ return 2;
+
+ if( (col->type & 0xff) != 4 )
ERR("Invalid column size!\n");
- return col->type & 0xff;
+
+ return 4;
}
static int utf2mime(int x)
@@ -620,6 +627,7 @@
column_info *col;
MSITABLE *table;
UINT i;
+ INT idx;
/* only add tables that don't exist already */
if( TABLE_Exists(db, name ) )
@@ -685,7 +693,11 @@
if( r )
goto err;
- r = tv->ops->insert_row( tv, rec, -1, persistent == MSICONDITION_FALSE );
+ r = table_find_insert_idx (tv, name, &idx);
+ if (r != ERROR_SUCCESS)
+ idx = -1;
+
+ r = tv->ops->insert_row( tv, rec, idx, persistent == MSICONDITION_FALSE );
TRACE("insert_row returned %x\n", r);
if( r )
goto err;
@@ -735,7 +747,11 @@
if( r )
goto err;
- r = tv->ops->insert_row( tv, rec, -1, FALSE );
+ r = table_find_insert_idx (tv, name, &idx);
+ if (r != ERROR_SUCCESS)
+ idx = -1;
+
+ r = tv->ops->insert_row( tv, rec, idx, FALSE );
if( r )
goto err;
@@ -1701,6 +1717,21 @@
return TABLE_set_row(view, new_row, rec, (1 << tv->num_cols) - 1);
}
+static UINT msi_table_assign(struct tagMSIVIEW *view, MSIRECORD *rec)
+{
+ MSITABLEVIEW *tv = (MSITABLEVIEW *)view;
+ UINT r, row;
+
+ if (!tv->table)
+ return ERROR_INVALID_PARAMETER;
+
+ r = msi_table_find_row(tv, rec, &row);
+ if (r == ERROR_SUCCESS)
+ return TABLE_set_row(view, row, rec, (1 << tv->num_cols) - 1);
+ else
+ return TABLE_insert_row( view, rec, -1, FALSE );
+}
+
static UINT modify_delete_row( struct tagMSIVIEW *view, MSIRECORD *rec )
{
MSITABLEVIEW *tv = (MSITABLEVIEW *)view;
@@ -1770,6 +1801,9 @@
break;
case MSIMODIFY_ASSIGN:
+ r = msi_table_assign( view, rec );
+ break;
+
case MSIMODIFY_REPLACE:
case MSIMODIFY_MERGE:
case MSIMODIFY_VALIDATE:
@@ -2923,3 +2957,29 @@
msi_free( t );
}
}
+
+static UINT table_find_insert_idx (MSIVIEW *view, LPCWSTR name, INT *pidx)
+{
+ UINT r, name_id, row_id;
+ INT idx;
+ MSITABLEVIEW *tv = (MSITABLEVIEW *)view;
+
+ TRACE ("%p %s\n", view, debugstr_w(name));
+
+ r = msi_string2idW(tv->db->strings, name, &name_id);
+ if (r != ERROR_SUCCESS)
+ {
+ *pidx = -1;
+ return r;
+ }
+
+ for( idx = 0; idx < tv->table->row_count; idx++ )
+ {
+ r = TABLE_fetch_int( &tv->view, idx, 1, &row_id );
+ if (row_id > name_id)
+ break;
+ }
+
+ *pidx = idx;
+ return ERROR_SUCCESS;
+}