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?re... ============================================================================== --- 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=42... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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@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?rev... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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... ============================================================================== --- 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?re... ============================================================================== --- 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... ============================================================================== --- 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=4... ============================================================================== --- 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; +}