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=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&view=auto
==============================================================================
--- 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 <[email protected]>
+ *
+ * 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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.idl?rev=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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=42507&r1=42506&r2=42507&view=diff
==============================================================================
--- 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;
+}


Reply via email to