[Libreoffice-commits] .: 2 commits - scp2/inc scp2/source setup_native/prj setup_native/source solenv/bin

Andras Timar timar at kemper.freedesktop.org
Tue Jun 5 04:42:21 PDT 2012


 scp2/inc/macros.inc                                                         |   12 
 scp2/source/base/registryitem_base.scp                                      |    2 
 scp2/source/calc/registryitem_calc.scp                                      |    8 
 scp2/source/draw/registryitem_draw.scp                                      |    8 
 scp2/source/impress/registryitem_impress.scp                                |    8 
 scp2/source/math/registryitem_math.scp                                      |    4 
 scp2/source/ooo/windowscustomaction_ooo.scp                                 |   36 
 scp2/source/winexplorerext/file_winexplorerext.scp                          |   16 
 scp2/source/winexplorerext/module_winexplorerext.scp                        |   25 
 scp2/source/winexplorerext/registryitem_winexplorerext.scp                  |  275 ++++-
 scp2/source/writer/registryitem_writer.scp                                  |   14 
 setup_native/prj/build.lst                                                  |    1 
 setup_native/source/win32/customactions/reg64/exports.dxp                   |    2 
 setup_native/source/win32/customactions/reg64/makefile.mk                   |   76 -
 setup_native/source/win32/customactions/reg64/reg64.cxx                     |  465 ----------
 setup_native/source/win32/customactions/shellextensions/exports.dxp         |    2 
 setup_native/source/win32/customactions/shellextensions/makefile.mk         |    1 
 setup_native/source/win32/customactions/shellextensions/shellextensions.cxx |  216 ----
 solenv/bin/modules/installer/windows/component.pm                           |   19 
 solenv/bin/modules/installer/windows/idtglobal.pm                           |   10 
 solenv/bin/modules/installer/windows/mergemodule.pm                         |    4 
 solenv/bin/modules/installer/windows/registry.pm                            |   14 
 22 files changed, 292 insertions(+), 926 deletions(-)

New commits:
commit 6d9be05a6fb251ed0cbcbcefd55ed174b1e8e39d
Author: Andras Timar <atimar at suse.com>
Date:   Tue Jun 5 13:37:30 2012 +0200

    fdo#47805 rework handling of 64-bit registry entries
    
    64-bit registry entries were entered via a custom action, which
    did not always work. By default the custom action ran with user
    privileges, which were not sufficient to write the registry.
    It is not necessary to use custom actions for this task. Windows
    installer supports it well.
    
    Change-Id: Id65458c363c2b90b3e7d166b4c836bfb1ff19bf4

diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc
index d776797..893e675 100755
--- a/scp2/inc/macros.inc
+++ b/scp2/inc/macros.inc
@@ -505,12 +505,18 @@ End
 #define REGISTER_PROPERTY_HANDLER_FOR_EXTENSION(extension) \
     RegistryItem CONCAT2(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension) \
         ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
-        ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl; \
+        ModuleID = gid_Module_Optional_Winexplorerext; \
         ComponentCondition = "VersionNT >= 600"; \
-        Styles = (X64); \
         Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
         Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
-        Val64 = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
+    End \
+\
+    RegistryItem CONCAT3(gid_Regitem_Software_Microsoft_Windows_CurrentVersion_PropertySystem_PropertyHandlers_,extension,_x64) \
+        ParentID = PREDEFINED_HKEY_LOCAL_MACHINE; \
+        ModuleID = gid_Module_Optional_Winexplorerext_x64; \
+        ComponentCondition = "VersionNT64 >= 600"; \
+        Subkey = STRING(CONCAT2(SOFTWARE\Microsoft\Windows\CurrentVersion\PropertySystem\PropertyHandlers\.,extension)); \
+        Value = "{AE424E85-F6DF-4910-A6A9-438797986431}"; \
     End
 
 #else
diff --git a/scp2/source/base/registryitem_base.scp b/scp2/source/base/registryitem_base.scp
index 6cf2817..0cf1782 100644
--- a/scp2/source/base/registryitem_base.scp
+++ b/scp2/source/base/registryitem_base.scp
@@ -114,7 +114,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odb_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.DatabaseDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/scp2/source/calc/registryitem_calc.scp b/scp2/source/calc/registryitem_calc.scp
index d981008..542aed3 100644
--- a/scp2/source/calc/registryitem_calc.scp
+++ b/scp2/source/calc/registryitem_calc.scp
@@ -533,7 +533,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_stc_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarCalcTemplate.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -585,7 +585,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxc_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarCalcDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -727,7 +727,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_ods_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.CalcDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -955,7 +955,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_ots_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.CalcTemplate.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/scp2/source/draw/registryitem_draw.scp b/scp2/source/draw/registryitem_draw.scp
index 367b3a3..d82a59f 100644
--- a/scp2/source/draw/registryitem_draw.scp
+++ b/scp2/source/draw/registryitem_draw.scp
@@ -505,7 +505,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_std_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarDrawTemplate.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -584,7 +584,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxd_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarDrawDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -727,7 +727,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odg_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.DrawDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -955,7 +955,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_otg_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.DrawTemplate.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/scp2/source/impress/registryitem_impress.scp b/scp2/source/impress/registryitem_impress.scp
index 5a732fb..d24f43d 100644
--- a/scp2/source/impress/registryitem_impress.scp
+++ b/scp2/source/impress/registryitem_impress.scp
@@ -519,7 +519,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sti_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarImpressTemplate.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -598,7 +598,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxi_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarImpressDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -742,7 +742,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odp_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.ImpressDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -984,7 +984,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_otp_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.ImpressTemplate.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/scp2/source/math/registryitem_math.scp b/scp2/source/math/registryitem_math.scp
index 1eea1a4..c4f808f 100644
--- a/scp2/source/math/registryitem_math.scp
+++ b/scp2/source/math/registryitem_math.scp
@@ -448,7 +448,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxm_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarMathDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -583,7 +583,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odf_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.MathDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/scp2/source/ooo/windowscustomaction_ooo.scp b/scp2/source/ooo/windowscustomaction_ooo.scp
index c111e17..077cd6e 100644
--- a/scp2/source/ooo/windowscustomaction_ooo.scp
+++ b/scp2/source/ooo/windowscustomaction_ooo.scp
@@ -81,24 +81,6 @@ WindowsCustomAction gid_Customaction_Regactivexdll2
 	Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=2 And \!FEATURETEMPLATE=3 And Not PATCH", "RemoveExistingProducts");
 End
 
-WindowsCustomAction gid_Customaction_Reg64dll1
-	Name = "Reg64dll1";
-	Typ = "65";
-	Source = "reg64msi.dll";
-	Target = "InstallReg64";
-	Inbinarytable = 1;
-	Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\" and VersionNT64", "end");
-End
-
-WindowsCustomAction gid_Customaction_Reg64dll2
-	Name = "Reg64dll2";
-	Typ = "65";
-	Source = "reg64msi.dll";
-	Target = "DeinstallReg64";
-	Inbinarytable = 1;
-	Assignment1 = ("InstallExecuteSequence", "REMOVE=\"ALL\" and VersionNT64", "end");
-End
-
 #ifdef HAVE_WINDOWS_SDK
 
 WindowsCustomAction gid_Customaction_Jfregcadll1
@@ -139,24 +121,6 @@ End
 
 #endif /* HAVE_WINDOWS_SDK */
 
-WindowsCustomAction gid_Customaction_Shellextensionsdll1
-	Name = "Shellextensionsdll1";
-	Typ = "65";
-	Source = "shlxtmsi.dll";
-	Target = "InstallExecSequenceEntry";
-	Inbinarytable = 1;
-	Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=3 And Not PATCH", "end");
-End
-
-WindowsCustomAction gid_Customaction_Shellextensionsdll2
-	Name = "Shellextensionsdll2";
-	Typ = "65";
-	Source = "shlxtmsi.dll";
-	Target = "DeinstallExecSequenceEntry";
-	Inbinarytable = 1;
-	Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=2 And \!FEATURETEMPLATE=3 And Not PATCH", "end");
-End
-
 WindowsCustomAction gid_Customaction_Instooofiltmsidll2
 	Name = "Instooofiltmsidll";
 	Typ = "65";
diff --git a/scp2/source/winexplorerext/file_winexplorerext.scp b/scp2/source/winexplorerext/file_winexplorerext.scp
index 59a0099..f2a2a89 100644
--- a/scp2/source/winexplorerext/file_winexplorerext.scp
+++ b/scp2/source/winexplorerext/file_winexplorerext.scp
@@ -59,7 +59,7 @@ File gid_File_Lib_Shlxthdl
 End
 
 #ifdef BUILD_X64
-	File gid_File_Lib_Shlxthdl64
+    File gid_File_Lib_Shlxthdl64
     LIB_FILE_BODY;
     Styles = (PACKED);
     Dir = gid_Dir_Shlxthdl;
@@ -74,15 +74,17 @@ File gid_File_Lib_PropertyHdl
     Styles = (PACKED);
     Dir = gid_Dir_Shlxthdl;
     Name = "propertyhdl.dll";
+    ComponentCondition = "VersionNT >= 600";
+
 End
 
 #ifdef BUILD_X64
-	File gid_File_Lib_PropertyHdl64
+    File gid_File_Lib_PropertyHdl64
     LIB_FILE_BODY;
     Styles = (PACKED);
     Dir = gid_Dir_Shlxthdl;
     Name = "propertyhdl_x64.dll";
-    ComponentCondition = "VersionNT64";
+    ComponentCondition = "VersionNT64 >= 600";
 End
 
 #endif
@@ -93,11 +95,3 @@ File gid_File_Lib_Shlxtmsi
     Dir = SCP2_OOO_BIN_DIR;
     Name = "shlxtmsi.dll";
 End
-
-File gid_File_Lib_Reg64
-    LIB_FILE_BODY;
-    Styles = (PACKED, BINARYTABLE, BINARYTABLE_ONLY);
-    Dir = SCP2_OOO_BIN_DIR;
-    Name = "reg64msi.dll";
-End
-
diff --git a/scp2/source/winexplorerext/module_winexplorerext.scp b/scp2/source/winexplorerext/module_winexplorerext.scp
index f20edcc..3932e4f 100644
--- a/scp2/source/winexplorerext/module_winexplorerext.scp
+++ b/scp2/source/winexplorerext/module_winexplorerext.scp
@@ -35,22 +35,21 @@ Module gid_Module_Optional_Winexplorerext
     ParentID = gid_Module_Optional;
     Dirs = (gid_Dir_Shlxthdl);
     Files = (gid_File_Lib_Shlxthdl,
-			 gid_File_Lib_Shlxthdl64,
-			 gid_File_Lib_OOoFilt,
-			 gid_File_Lib_OOoFilt64,
+             gid_File_Lib_OOoFilt,
+             gid_File_Lib_PropertyHdl,
              gid_File_Lib_Shlxtmsi,
-             gid_File_Lib_Reg64,
              gid_File_Tmp_Userinstall_Winexplorerext_Inf);    
 End
 
-Module gid_Module_Optional_Winexplorerext_PropertyHdl
-	ParentID = gid_Module_Optional_Winexplorerext;
-	Name = "gid_Module_Optional_Winexplorerext_PropertyHdl";
-	Description = "gid_Module_Optional_Winexplorerext_PropertyHdl";
-	Sortkey = "1210";
-	Default = YES;
-	Styles = (HIDDEN_ROOT);
+Module gid_Module_Optional_Winexplorerext_x64
+    ParentID = gid_Module_Optional_Winexplorerext;
+    Name = "gid_Module_Optional_Winexplorerext_x64";
+    Description = "gid_Module_Optional_Winexplorerext_x64";
+    Sortkey = "1210";
+    Default = YES;
+    Styles = (HIDDEN_ROOT);
     Dirs = (gid_Dir_Shlxthdl);
-	Files = (gid_File_Lib_PropertyHdl,
-			 gid_File_Lib_PropertyHdl64);
+    Files = (gid_File_Lib_Shlxthdl64,
+             gid_File_Lib_OOoFilt64,
+             gid_File_Lib_PropertyHdl64);
 End
diff --git a/scp2/source/winexplorerext/registryitem_winexplorerext.scp b/scp2/source/winexplorerext/registryitem_winexplorerext.scp
index 32a5ef8..dc1ec5f 100644
--- a/scp2/source/winexplorerext/registryitem_winexplorerext.scp
+++ b/scp2/source/winexplorerext/registryitem_winexplorerext.scp
@@ -33,20 +33,50 @@
 RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{087B3AE3-E237-4467-B8DB-5A38AB959AC9}\InprocServer32";
     Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl.dll";
-    Val64 = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
+End
+
+RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{087B3AE3-E237-4467-B8DB-5A38AB959AC9}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
 End
 
 RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{087B3AE3-E237-4467-B8DB-5A38AB959AC9}\InprocServer32";
     Name = "ThreadingModel";
     Value = "Apartment";
-    Val64 = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{087B3AE3-E237-4467-B8DB-5A38AB959AC9}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_Approved
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{087B3AE3-E237-4467-B8DB-5A38AB959AC9}";
+    Value = "%PRODUCTNAME Infotip Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_087B3AE3_E237_4467_B8DB_5A38AB959AC9_Approved_x64
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{087B3AE3-E237-4467-B8DB-5A38AB959AC9}";
+    Value = "%PRODUCTNAME Infotip Handler";
 End
 
 // End registry items for the Infotip handler
@@ -56,22 +86,53 @@ End
 RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{3B092F0C-7696-40E3-A80F-68D74DA84210}\InprocServer32";
     Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl.dll";
-    Val64 = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
+End
+
+RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{3B092F0C-7696-40E3-A80F-68D74DA84210}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
 End
 
 RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{3B092F0C-7696-40E3-A80F-68D74DA84210}\InprocServer32";
     Name = "ThreadingModel";
     Value = "Apartment";
     Val64 = "Apartment";
 End
 
+RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{3B092F0C-7696-40E3-A80F-68D74DA84210}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_Approved
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{3B092F0C-7696-40E3-A80F-68D74DA84210}";
+    Value = "%PRODUCTNAME Thumbnail Viewer";
+End
+
+RegistryItem gid_Regitem_Clsid_3B092F0C_7696_40E3_A80F_68D74DA84210_Approved_x64
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{3B092F0C-7696-40E3-A80F-68D74DA84210}";
+    Value = "%PRODUCTNAME Thumbnail Viewer";
+End
+
 // End registry items for the Thumbnail viewer
 
 // Begin registry items for the Column handler
@@ -79,79 +140,147 @@ End
 RegistryItem gid_Regitem_Folder_shellex_ColumnHandlers_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "Folder\shellex\ColumnHandlers\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}";
     Value = "%PRODUCTNAME Column Handler";
-    Val64 = "%PRODUCTNAME Column Handler";
+End
+
+RegistryItem gid_Regitem_Folder_shellex_ColumnHandlers_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "Folder\shellex\ColumnHandlers\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}";
+    Value = "%PRODUCTNAME Column Handler";
 End
 
 RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}\InprocServer32";
     Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl.dll";
-    Val64 = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
 End
-    
+
+RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
+End
+
 RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}\InprocServer32";
     Name = "ThreadingModel";
     Value = "Apartment";
-    Val64 = "Apartment";
 End
-    
+
+RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_Approved
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}";
+    Value = "%PRODUCTNAME Column Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_C52AF81D_F7A0_4AAB_8E87_F80A60CCD396_Approved_x64
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}";
+    Value = "%PRODUCTNAME Column Handler";
+End
+
 // End registry items for the Column handler
 
 // Begin registry items for the MS Indexing server filter component
 
 RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Root;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}";
+    Value = "OpenDocument Format Filter";
+End
+
+RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
     Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}";
-    Styles = (X64_ONLY); // Values: X64
     Value = "OpenDocument Format Filter";
-    Val64 = "OpenDocument Format Filter";
 End
 
 RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Root;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}\InprocServer32";
-    Styles = (X64); // Values: X64 / X64_ONLY
     Value = "[INSTALLLOCATION]program\shlxthdl\ooofilt.dll";
     Val64 = "[INSTALLLOCATION]program\shlxthdl\ooofilt_x64.dll";
 End
 
+RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\ooofilt_x64.dll";
+End
+
 RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Root;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_7BC0E710_5703_45BE_A29D_5D46D8B39262_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
     Subkey = "CLSID\{7BC0E710-5703-45BE-A29D-5D46D8B39262}\InprocServer32";
-    Styles = (X64); // Values: X64
     Name = "ThreadingModel";
     Value = "Apartment";
-    Val64 = "Apartment";
 End
 
 RegistryItem gid_Regitem_Clsid_7BC0E713_5703_45BE_A29D_5D46D8B39262
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Root;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "CLSID\{7BC0E713-5703-45BE-A29D-5D46D8B39262}";
+    Value = "OpenDocument Format Persistent Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_7BC0E713_5703_45BE_A29D_5D46D8B39262_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
     Subkey = "CLSID\{7BC0E713-5703-45BE-A29D-5D46D8B39262}";
-    Styles = (X64); // Values: X64
     Value = "OpenDocument Format Persistent Handler";
-    Val64 = "OpenDocument Format Persistent Handler";
 End
 
 RegistryItem gid_Regitem_Clsid_7BC0E713_5703_45BE_A29D_5D46D8B39262_PersistentAddinsRegistered
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Root;
-    Styles = (X64); // Values: X64
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "CLSID\{7BC0E713-5703-45BE-A29D-5D46D8B39262}\PersistentAddinsRegistered\{89BCB740-6119-101A-BCB7-00DD010655AF}";
+    Value = "{7BC0E710-5703-45BE-A29D-5D46D8B39262}";
+End
+
+RegistryItem gid_Regitem_Clsid_7BC0E713_5703_45BE_A29D_5D46D8B39262_PersistentAddinsRegistered_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
     Subkey = "CLSID\{7BC0E713-5703-45BE-A29D-5D46D8B39262}\PersistentAddinsRegistered\{89BCB740-6119-101A-BCB7-00DD010655AF}";
     Value = "{7BC0E710-5703-45BE-A29D-5D46D8B39262}";
-    Val64 = "{7BC0E710-5703-45BE-A29D-5D46D8B39262}";
 End
 
 // End registry items for the MS Indexing server filter component
@@ -161,20 +290,50 @@ End
 RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{63542C48-9552-494A-84F7-73AA6A7C99C1}\InprocServer32";
     Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl.dll";
-    Val64 = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
+End
+
+RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{63542C48-9552-494A-84F7-73AA6A7C99C1}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\shlxthdl_x64.dll";
 End
 
 RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
     ModuleID = gid_Module_Optional_Winexplorerext;
-    Styles = (X64);
     Subkey = "CLSID\{63542C48-9552-494A-84F7-73AA6A7C99C1}\InprocServer32";
     Name = "ThreadingModel";
     Value = "Apartment";
-    Val64 = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "CLSID\{63542C48-9552-494A-84F7-73AA6A7C99C1}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_Approved
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext;
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{63542C48-9552-494A-84F7-73AA6A7C99C1}";
+    Value = "%PRODUCTNAME Property Sheet Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_63542C48_9552_494A_84F7_73AA6A7C99C1_Approved_x64
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64";
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{63542C48-9552-494A-84F7-73AA6A7C99C1}";
+    Value = "%PRODUCTNAME Property Sheet Handler";
 End
 
 // End registry entries for the PropertySheet handler
@@ -183,44 +342,70 @@ End
 
 RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_PropHdl
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     ComponentCondition = "VersionNT >= 600";
-    Styles = (X64);
     Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}";
     Value = "%PRODUCTNAME Property Handler";
-    Val64 = "%PRODUCTNAME Property Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_PropHdl_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64 >= 600";
+    Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}";
+    Value = "%PRODUCTNAME Property Handler";
 End
 
 RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_InProcServer32
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     ComponentCondition = "VersionNT >= 600";
-    Styles = (X64);
     Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}\InprocServer32";
     Value = "[INSTALLLOCATION]program\shlxthdl\propertyhdl.dll";
-    Val64 = "[INSTALLLOCATION]program\shlxthdl\propertyhdl_x64.dll";
+End
+
+RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_InProcServer32_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64 >= 600";
+    Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}\InprocServer32";
+    Value = "[INSTALLLOCATION]program\shlxthdl\propertyhdl_x64.dll";
 End
 
 RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_InProcServer32_ThreadingModel
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     ComponentCondition = "VersionNT >= 600";
-    Styles = (X64);
     Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}\InprocServer32";
     Name = "ThreadingModel";
     Value = "Apartment";
-    Val64 = "Apartment";
+End
+
+RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_InProcServer32_ThreadingModel_x64
+    ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64 >= 600";
+    Subkey = "CLSID\{AE424E85-F6DF-4910-A6A9-438797986431}\InprocServer32";
+    Name = "ThreadingModel";
+    Value = "Apartment";
 End
 
 RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_Approved
     ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     ComponentCondition = "VersionNT >= 600";
-    Styles = (X64);
     Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
     Name = "{AE424E85-F6DF-4910-A6A9-438797986431}";
     Value = "%PRODUCTNAME Property Handler";
-    Val64 = "%PRODUCTNAME Property Handler";
+End
+
+RegistryItem gid_Regitem_Clsid_AE424E85_F6DF_4910_A6A9_438797986431_Approved_x64
+    ParentID = PREDEFINED_HKEY_LOCAL_MACHINE;
+    ModuleID = gid_Module_Optional_Winexplorerext_x64;
+    ComponentCondition = "VersionNT64 >= 600";
+    Subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved";
+    Name = "{AE424E85-F6DF-4910-A6A9-438797986431}";
+    Value = "%PRODUCTNAME Property Handler";
 End
 
 // End registry entries for the Property handler
diff --git a/scp2/source/writer/registryitem_writer.scp b/scp2/source/writer/registryitem_writer.scp
index f29b5cb..26aaf35 100644
--- a/scp2/source/writer/registryitem_writer.scp
+++ b/scp2/source/writer/registryitem_writer.scp
@@ -592,7 +592,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_stw_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarWriterTemplate.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -655,7 +655,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxg_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarWriterGlobalDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -734,7 +734,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_sxw_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "soffice.StarWriterDocument.6";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -883,7 +883,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odt_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.WriterDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -1128,7 +1128,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_ott_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.WriterTemplate.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -1280,7 +1280,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_odm_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.WriterGlobalDocument.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
@@ -1474,7 +1474,7 @@ End
 #ifdef _MSC_VER
 RegistryItem gid_Regitem_oth_FullDetails
     ParentID = PREDEFINED_HKEY_CLASSES_ROOT;
-    ModuleID = gid_Module_Optional_Winexplorerext_PropertyHdl;
+    ModuleID = gid_Module_Optional_Winexplorerext;
     Subkey = "LibreOffice.WriterWebTemplate.1";
     Name = "FullDetails";
     Value = "prop:System.PropGroup.Description;System.Title;System.Author;System.Subject;System.Keywords;System.Comment;System.PropGroup.FileSystem;System.ItemNameDisplay;System.ItemType;System.ItemFolderPathDisplay;System.Size;System.DateCreated;System.DateModified;System.FileAttributes;System.ComputerName";
diff --git a/setup_native/prj/build.lst b/setup_native/prj/build.lst
index 13362f5..8898e8a 100644
--- a/setup_native/prj/build.lst
+++ b/setup_native/prj/build.lst
@@ -10,7 +10,6 @@ pk  setup_native\source\win32\customactions\regpatchactivex nmake -  w   sn_regp
 pk  setup_native\source\win32\customactions\reg4allmsdoc  nmake   -  w   sn_reg4allmsdoc NULL
 pk  setup_native\source\win32\customactions\sellang       nmake   -  w   sn_sellang NULL
 pk  setup_native\source\win32\customactions\thesaurus     nmake   -  w   sn_thesaurus NULL
-pk  setup_native\source\win32\customactions\reg64		  nmake   -  w   sn_reg64 NULL
 pk  setup_native\source\win32\customactions\javafilter    nmake   -  w   sn_javafilter NULL
 pk  setup_native\source\win32\customactions\quickstarter  nmake   -  w   sn_quickstarter NULL
 pk  setup_native\source\win32\customactions\shellextensions nmake   -  w   sn_shellextensions sn_tools.w NULL
diff --git a/setup_native/source/win32/customactions/reg64/exports.dxp b/setup_native/source/win32/customactions/reg64/exports.dxp
deleted file mode 100755
index 3282da1..0000000
--- a/setup_native/source/win32/customactions/reg64/exports.dxp
+++ /dev/null
@@ -1,2 +0,0 @@
-InstallReg64
-DeinstallReg64
diff --git a/setup_native/source/win32/customactions/reg64/makefile.mk b/setup_native/source/win32/customactions/reg64/makefile.mk
deleted file mode 100644
index a0d7fba..0000000
--- a/setup_native/source/win32/customactions/reg64/makefile.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-# 
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org 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 version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org.  If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..
-PRJNAME=setup_native
-TARGET=reg64msi
-
-# --- Settings -----------------------------------------------------
-
-ENABLE_EXCEPTIONS=TRUE
-NO_DEFAULT_STL=TRUE
-DYNAMIC_CRT=
-USE_DEFFILE=TRUE
-EXTERNAL_WARNINGS_NOT_ERRORS := TRUE 
-
-.INCLUDE : settings.mk
-
-#Disable precompiled header
-CDEFS+=-Dnot_used_define_to_disable_pch
-
-# --- Files --------------------------------------------------------
-
-.IF "$(GUI)"=="WNT" && "$(WINDOWS_SDK_HOME)"!=""
-
-UWINAPILIB=
-
-SLOFILES = \
-    $(SLO)$/reg64.obj
-
-STDSHL += \
-    $(KERNEL32LIB)\
-    $(USER32LIB)\
-    $(ADVAPI32LIB)\
-    $(SHELL32LIB)\
-    $(MSILIB)\
-    $(SHLWAPILIB)\
-    
-SHL1TARGET = $(TARGET)
-SHL1IMPLIB = i$(TARGET)
-
-SHL1OBJS=$(SLOFILES) 
-SHL1DEF = $(MISC)$/$(SHL1TARGET).def
-SHL1DEPN = $(SLB)$/$(TARGET).lib
-DEF1NAME=$(SHL1TARGET)
-DEF1EXPORTFILE=exports.dxp
-
-.ENDIF
-
-# --- Targets --------------------------------------------------------------
-
-.INCLUDE : target.mk
-INCLUDE!:=$(subst,/stl, $(INCLUDE))
diff --git a/setup_native/source/win32/customactions/reg64/reg64.cxx b/setup_native/source/win32/customactions/reg64/reg64.cxx
deleted file mode 100644
index 7490a15..0000000
--- a/setup_native/source/win32/customactions/reg64/reg64.cxx
+++ /dev/null
@@ -1,465 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
-*
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
-************************************************************************/
-
-#define UNICODE
-
-#ifdef _MSC_VER
-#pragma warning(push, 1) /* disable warnings within system headers */
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <msiquery.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#include <malloc.h>
-#include <strsafe.h>
-
-// MinGW doesn't know anything about RegDeleteKeyExW if WINVER < 0x0502.
-extern "C" {
-WINADVAPI LONG WINAPI RegDeleteKeyExW(HKEY,LPCWSTR,REGSAM,DWORD);
-}
-
-// to provide windows xp as build systems for mingw we need to define KEY_WOW64_64KEY
-// in mingw 3.13 KEY_WOW64_64KEY isn't available < Win2003 systems.
-// Also defined in setup_native\source\win32\customactions\reg64\reg64.cxx,source\win32\customactions\shellextensions\shellextensions.cxx and
-// extensions\source\activex\main\so_activex.cpp
-
-#ifndef KEY_WOW64_64KEY
-    #define KEY_WOW64_64KEY (0x0100)
-#endif
-
-
-#define TABLE_NAME L"Reg64"
-#define INSTALLLOCATION L"[INSTALLLOCATION]"
-
-bool isInstall4AllUsers;
-wchar_t * sBasisInstallLocation;
-
-
-enum OPERATION {
-    SET,
-    REMOVE
-};
-
-#ifdef DEBUG
-inline void OutputDebugStringFormat( const wchar_t* pFormat, ... )
-{
-    wchar_t    buffer[1024];
-    va_list args;
-
-    va_start( args, pFormat );
-    StringCchVPrintf( buffer, sizeof(buffer), pFormat, args );
-    OutputDebugString( buffer );
-}
-#else
-static inline void OutputDebugStringFormat( const wchar_t*, ... )
-{
-}
-#endif
-
-bool WriteRegistry( MSIHANDLE & hMSI, OPERATION op, const wchar_t* componentName)
-{
-    INSTALLSTATE current_state;
-    INSTALLSTATE comp_state;
-    UINT ret = MsiGetComponentState( hMSI, componentName, &current_state, &comp_state );
-    if ( ERROR_SUCCESS == ret )
-    {
-        if (current_state == INSTALLSTATE_ABSENT)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_ABSENT");
-        else if (current_state == INSTALLSTATE_DEFAULT)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_DEFAULT");
-        else if (current_state == INSTALLSTATE_LOCAL)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_LOCAL");
-        else if (current_state == INSTALLSTATE_REMOVED)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_REMOVED");
-        else if (current_state == INSTALLSTATE_SOURCE)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_SOURCE");
-        else if (current_state == INSTALLSTATE_UNKNOWN)
-            OutputDebugStringFormat(L"WriteRegistry - current_state: INSTALLSTATE_UNKNOWN");
-
-        if (comp_state == INSTALLSTATE_ABSENT)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_ABSENT");
-        else if (comp_state == INSTALLSTATE_DEFAULT)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_DEFAULT");
-        else if (comp_state == INSTALLSTATE_LOCAL)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_LOCAL");
-        else if (comp_state == INSTALLSTATE_REMOVED)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_REMOVED");
-        else if (comp_state == INSTALLSTATE_SOURCE)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_SOURCE");
-        else if (comp_state == INSTALLSTATE_UNKNOWN)
-            OutputDebugStringFormat(L"WriteRegistry - comp_state: INSTALLSTATE_UNKNOWN");
-
-        switch (op)
-        {
-            case SET :
-                if ( comp_state == INSTALLSTATE_LOCAL || ( current_state == INSTALLSTATE_LOCAL && comp_state == INSTALLSTATE_UNKNOWN ) )
-                {
-                    return true;
-                }
-                break;
-            case REMOVE:
-                OutputDebugStringFormat(L"WriteRegistry - Remove\n" );
-                if ( current_state == INSTALLSTATE_LOCAL && (comp_state == INSTALLSTATE_ABSENT || comp_state == INSTALLSTATE_REMOVED) )
-                {
-                    OutputDebugStringFormat(L"WriteRegistry - To be removed\n" );
-                    return true;
-                }
-        }
-    } else
-    {
-        if (ERROR_INVALID_HANDLE == ret) OutputDebugStringFormat(L"WriteRegistry - Invalid handle");
-        if (ERROR_UNKNOWN_FEATURE  == ret) OutputDebugStringFormat(L"WriteRegistry - Unknown feature");
-    }
-
-    return false;
-}
-
-BOOL UnicodeEquals( wchar_t* pStr1, wchar_t* pStr2 )
-{
-    if ( pStr1 == NULL && pStr2 == NULL )
-        return TRUE;
-    else if ( pStr1 == NULL || pStr2 == NULL )
-        return FALSE;
-
-    while( *pStr1 == *pStr2 && *pStr1 && *pStr2 )
-        pStr1++, pStr2++;
-
-    return ( *pStr1 == 0 && *pStr2 == 0 );
-}
-
-BOOL GetMsiProp( MSIHANDLE hMSI, const wchar_t* pPropName, wchar_t** ppValue )
-{
-    OutputDebugStringFormat(L"GetMsiProp - START\n" );
-    DWORD sz = 0;
-    UINT ret = MsiGetProperty( hMSI, pPropName, L"", &sz );
-       if ( ret == ERROR_MORE_DATA )
-       {
-           sz++;
-           DWORD nbytes = sz * sizeof( wchar_t );
-           wchar_t* buff = reinterpret_cast<wchar_t*>( malloc( nbytes ) );
-           ZeroMemory( buff, nbytes );
-           MsiGetProperty( hMSI, pPropName, buff, &sz );
-
-        OutputDebugStringFormat(L"GetMsiProp - Value" );
-        OutputDebugStringFormat( buff );
-           *ppValue = buff;
-
-        return TRUE;
-    } else if (ret  == ERROR_INVALID_HANDLE)
-    {
-        OutputDebugStringFormat(L"GetMsiProp - ERROR_INVALID_HANDLE" );
-    } else if (ret == ERROR_INVALID_PARAMETER)
-    {
-        OutputDebugStringFormat(L"GetMsiProp - ERROR_INVALID_PARAMETER" );
-    } else if (ret == ERROR_SUCCESS)
-    {
-        OutputDebugStringFormat(L"GetMsiProp - ERROR_SUCCESS" );
-    }
-
-
-    OutputDebugStringFormat(L"GetMsiProp - ENDE\n" );
-    return FALSE;
-}
-
-bool IsInstallForAllUsers( MSIHANDLE hMSI )
-{
-    OutputDebugStringFormat(L"IsInstallForAllUsers - START\n" );
-    bool bResult = FALSE;
-    wchar_t* pVal = NULL;
-    if ( GetMsiProp( hMSI, L"ALLUSERS", &pVal ) && pVal )
-    {
-        bResult = UnicodeEquals( pVal , L"1" );
-        free( pVal );
-    }
-
-    OutputDebugStringFormat(L"IsInstallForAllUsers - ENDE\n" );
-    return bResult;
-}
-
-wchar_t* GetBasisInstallLocation( MSIHANDLE hMSI )
-{
-    OutputDebugStringFormat(L"GetBasisInstallLocation - START\n" );
-    wchar_t* pVal = NULL;
-    GetMsiProp( hMSI, L"INSTALLLOCATION", &pVal);
-
-    OutputDebugStringFormat(L"GetBasisInstallLocation - ENDE\n" );
-
-    return pVal;
-}
-
-
-bool QueryReg64Table(MSIHANDLE& rhDatabase, MSIHANDLE& rhView)
-{
-    OutputDebugStringFormat(L"QueryReg64Table - START\n" );
-    int const arraysize = 400;
-    wchar_t szSelect[arraysize];
-    StringCbPrintfW(szSelect, arraysize * sizeof(wchar_t), L"SELECT * FROM %s",TABLE_NAME);
-    OutputDebugStringFormat( szSelect );
-
-    UINT ret = MsiDatabaseOpenView(rhDatabase,szSelect,&rhView);
-    if (ret != ERROR_SUCCESS)
-    {
-        if ( ret == ERROR_BAD_QUERY_SYNTAX)
-            OutputDebugStringFormat(L"QueryReg64Table - MsiDatabaseOpenView - FAILED - ERROR_BAD_QUERY_SYNTAX\n" );
-        if ( ret == ERROR_INVALID_HANDLE)
-            OutputDebugStringFormat(L"QueryReg64Table - MsiDatabaseOpenView - FAILED - ERROR_INVALID_HANDLE\n" );
-        return false;
-    }
-    // execute query - not a parameter query so second parameter is NULL.
-    if (MsiViewExecute(rhView,NULL) != ERROR_SUCCESS)
-    {
-        OutputDebugStringFormat(L"QueryReg64Table - MsiViewExecute - FAILED\n" );
-        return false;
-    }
-
-    OutputDebugStringFormat(L"QueryReg64Table - ENDE\n" );
-    return true;
-}
-
-//---------------------------------------
-bool DeleteRegistryKey(HKEY RootKey, const wchar_t* KeyName)
-{
-    int rc = RegDeleteKeyExW(
-        RootKey, KeyName, KEY_WOW64_64KEY, 0);
-
-    return (ERROR_SUCCESS == rc);
-}
-
-bool SetRegistryKey(HKEY RootKey, const wchar_t* KeyName, const wchar_t* ValueName, const wchar_t* Value)
-{
-    HKEY hSubKey;
-
-    // open or create the desired key
-    int rc = RegCreateKeyEx(
-        RootKey, KeyName, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_WRITE | KEY_WOW64_64KEY, 0, &hSubKey, 0);
-
-    if (ERROR_SUCCESS == rc)
-    {
-        OutputDebugStringFormat(L"SetRegistryKey - Created\n" );
-        rc = RegSetValueEx(
-            hSubKey, ValueName, 0, REG_SZ, reinterpret_cast<const BYTE*>(Value), (wcslen(Value) + 1) * sizeof(wchar_t));
-
-        RegCloseKey(hSubKey);
-    } else {
-        OutputDebugStringFormat(L"SetRegistryKey - FAILED\n" );
-    }
-
-
-    return (ERROR_SUCCESS == rc);
-}
-
-bool DoRegEntries( MSIHANDLE& rhMSI, OPERATION op, MSIHANDLE& rhView)
-{
-    OutputDebugStringFormat(L"DoRegEntries - START\n" );
-
-    MSIHANDLE hRecord;
-
-    long lRoot;
-    wchar_t  szKey[255];
-    wchar_t  szName[255];
-    wchar_t  szValue[1024];
-    wchar_t  szComponent[255];
-
-    /// read records until there are no more records
-    while (MsiViewFetch(rhView,&hRecord) == ERROR_SUCCESS)
-    {
-        DWORD    dwKey = 255;
-        DWORD    dwName = 255;
-        DWORD    dwValue = 1024;
-        DWORD    dwComponent = 255;
-
-        szKey[0] = '\0';
-        szName[0] = '\0';
-        szValue[0] = '\0';
-        szComponent[0] = '\0';
-
-        lRoot = MsiRecordGetInteger(hRecord,2);
-        MsiRecordGetString(hRecord,3,szKey,&dwKey);
-
-        if (!MsiRecordIsNull(hRecord, 4))
-            MsiRecordGetString(hRecord,4,szName,&dwName);
-
-        if (!MsiRecordIsNull(hRecord, 5))
-        {
-            MsiRecordGetString(hRecord,5,szValue,&dwValue);
-
-
-
-            wchar_t* nPos = wcsstr(szValue , INSTALLLOCATION);
-            if ( NULL != nPos)
-            {
-
-                DWORD nPrefixSize = nPos - szValue;
-
-                DWORD nPropSize = wcslen(sBasisInstallLocation);
-                DWORD nPostfixSize = dwValue - wcslen( INSTALLLOCATION );
-
-                DWORD nNewValueBytes = (nPropSize + nPostfixSize + 1) * sizeof( wchar_t );
-                   wchar_t* newValue = reinterpret_cast<wchar_t*>( malloc( nNewValueBytes ) );
-                   ZeroMemory( newValue, nNewValueBytes );
-
-                // prefix
-                wcsncpy(newValue, szValue, nPrefixSize);
-
-                // basis location
-                wcsncat(newValue, sBasisInstallLocation, nPropSize * sizeof( wchar_t ));
-
-                // postfix
-                wcsncat(newValue, nPos + ( wcslen( INSTALLLOCATION ) ), nPropSize * sizeof( wchar_t ));
-
-                wcsncpy(szValue, newValue, nNewValueBytes <=1024? nNewValueBytes: 1024);
-
-                free(newValue);
-            }
-
-        }
-
-
-        MsiRecordGetString(hRecord,6,szComponent,&dwComponent);
-
-        OutputDebugStringFormat(L"****** DoRegEntries *******" );
-        OutputDebugStringFormat(L"Root:" );
-        HKEY key = HKEY_CURRENT_USER;
-        switch (lRoot)
-        {
-            case(-1):
-                    if (isInstall4AllUsers)
-                    {
-                        key = HKEY_LOCAL_MACHINE;
-                        OutputDebugStringFormat(L"HKEY_LOCAL_MACHINE" );
-                    }
-                    else
-                    {
-                        key = HKEY_CURRENT_USER;
-                        OutputDebugStringFormat(L"HKEY_CURRENT_USER" );
-                    }
-                break;
-            case(0):
-                    key = HKEY_CLASSES_ROOT;
-                    OutputDebugStringFormat(L"HKEY_CLASSES_ROOT" );
-                break;
-            case(1):
-                    key = HKEY_CURRENT_USER;
-                    OutputDebugStringFormat(L"HKEY_CURRENT_USER" );
-                break;
-            case(2):
-                    key = HKEY_LOCAL_MACHINE;
-                    OutputDebugStringFormat(L"HKEY_LOCAL_MACHINE" );
-                break;
-            case(3):
-                    key = HKEY_USERS;
-                    OutputDebugStringFormat(L"HKEY_USERS" );
-                break;
-            default:
-                    OutputDebugStringFormat(L"Unknown Root!" );
-                break;
-        }
-
-        OutputDebugStringFormat(L"Key:");
-        OutputDebugStringFormat( szKey );
-        OutputDebugStringFormat(L"Name:");
-        OutputDebugStringFormat( szName );
-        OutputDebugStringFormat(L"Value:");
-        OutputDebugStringFormat( szValue);
-        OutputDebugStringFormat(L"Component:");
-        OutputDebugStringFormat( szComponent );
-        OutputDebugStringFormat(L"*******************" );
-        switch (op)
-        {
-            case SET:
-
-                    if (WriteRegistry(rhMSI, SET, szComponent))
-                    {
-                        OutputDebugStringFormat(L"DoRegEntries - Write\n" );
-                        SetRegistryKey(key, szKey, szName, szValue);
-                    }
-                break;
-            case REMOVE:
-                    OutputDebugStringFormat(L"DoRegEntries - PreRemove\n" );
-                    if (WriteRegistry(rhMSI, REMOVE, szComponent))
-                    {
-                        OutputDebugStringFormat(L"DoRegEntries - Remove\n" );
-                        DeleteRegistryKey(key, szKey);
-                    }
-                break;
-        }
-    }
-
-    MsiCloseHandle(rhView);
-
-
-    OutputDebugStringFormat(L"DoRegEntries - ENDE\n" );
-
-    return true;
-}
-
-
-bool Reg64(MSIHANDLE& rhMSI, OPERATION op)
-{
-    isInstall4AllUsers = IsInstallForAllUsers(rhMSI);
-    sBasisInstallLocation = GetBasisInstallLocation(rhMSI);
-
-    if (NULL == sBasisInstallLocation)
-    {
-        OutputDebugStringFormat(L"BASISINSTALLLOCATION is NULL\n" );
-        return false;
-    }
-
-    MSIHANDLE hView;
-    MSIHANDLE hDatabase = MsiGetActiveDatabase(rhMSI);
-
-    QueryReg64Table(hDatabase, hView);
-    OutputDebugStringFormat(L"Do something\n" );
-    DoRegEntries( rhMSI, op, hView);
-    OutputDebugStringFormat(L"Something done\n" );
-
-    MsiCloseHandle(hView);
-    MsiCloseHandle(hDatabase);
-    free(sBasisInstallLocation);
-
-    return true;
-}
-
-extern "C" UINT __stdcall InstallReg64(MSIHANDLE hMSI)
-{
-    OutputDebugStringFormat(L"InstallReg64\n" );
-    Reg64(hMSI, SET);
-    return ERROR_SUCCESS;
-}
-
-extern "C" UINT __stdcall DeinstallReg64(MSIHANDLE hMSI)
-{
-    OutputDebugStringFormat(L"DeinstallReg64\n" );
-    Reg64(hMSI, REMOVE);
-    return ERROR_SUCCESS;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/setup_native/source/win32/customactions/shellextensions/exports.dxp b/setup_native/source/win32/customactions/shellextensions/exports.dxp
index 5826d33..4e26119 100644
--- a/setup_native/source/win32/customactions/shellextensions/exports.dxp
+++ b/setup_native/source/win32/customactions/shellextensions/exports.dxp
@@ -1,5 +1,3 @@
-InstallExecSequenceEntry
-DeinstallExecSequenceEntry
 InstallStartmenuFolderIcon
 DeinstallStartmenuFolderIcon
 SetProductInstallMode
diff --git a/setup_native/source/win32/customactions/shellextensions/makefile.mk b/setup_native/source/win32/customactions/shellextensions/makefile.mk
index b6961cf..3a15e35 100644
--- a/setup_native/source/win32/customactions/shellextensions/makefile.mk
+++ b/setup_native/source/win32/customactions/shellextensions/makefile.mk
@@ -48,7 +48,6 @@ CDEFS+=-Dnot_used_define_to_disable_pch
 UWINAPILIB=
 
 SLOFILES = \
-    $(SLO)$/shellextensions.obj \
     $(SLO)$/startmenuicon.obj \
     $(SLO)$/upgrade.obj \
     $(SLO)$/iconcache.obj \
diff --git a/setup_native/source/win32/customactions/shellextensions/shellextensions.cxx b/setup_native/source/win32/customactions/shellextensions/shellextensions.cxx
deleted file mode 100644
index 5ddea95..0000000
--- a/setup_native/source/win32/customactions/shellextensions/shellextensions.cxx
+++ /dev/null
@@ -1,216 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org.  If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-/*
-    Windows shell extensions need to be approved in order to be used by the
-    Windows shell for clarification read the following section from the
-    Microsoft Developers Network Library (MSDN) see
-    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/shell_ext.asp
-
-
-    <MSDN>
-    Shell extension handlers run in the Shell process. Because it is a system process,
-    the administrator of a Windows NT system can limit Shell extension handlers to
-    those on an approved list by setting the EnforceShellExtensionSecurity value of the
-    HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer key to 1
-    (one).
-    To place a Shell extension handler on the approved list, create a REG_SZ value whose
-    name is the string form of the handler's GUID under
-    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Shell Extensions\Approved.
-
-    The Shell does not use the value that is assigned to the GUID, but it should be set to
-    make inspecting the registry easier.
-
-    Your setup application can add values to the Approved key only if the person installing
-    the application has sufficient privileges. If the attempt to add an extension handler
-    fails, you should inform the user that administrative privileges are required to fully
-    install the application. If the handler is essential to the application, you should fail
-    the setup and notify the user to contact an administrator.
-
-    While there is no need to add values to the Approved key on Windows 95 or Windows 98
-    systems, there is no harm in doing so. The system will simply ignore them. However, there
-    is no guarantee that the key will exist on these systems. Your setup program must be able
-    to handle this case.
-    </MSDN>
-
-    We add the following entries to the respective registry key
-    "{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}"="LibreOffice Column Handler"
-    "{087B3AE3-E237-4467-B8DB-5A38AB959AC9}"="LibreOffice Infotip Handler"
-    "{63542C48-9552-494A-84F7-73AA6A7C99C1}"="LibreOffice Property Sheet Handler"
-    "{3B092F0C-7696-40E3-A80F-68D74DA84210}"="LibreOffice Thumbnail Viewer"
-
-    These shell extensions are implemented in the 'shell' project. We ignore registration
-    failures because of insufficient privileges. The reason is: On systems which restrict the
-    use of shell extensions by applying the aforementioned policy probably only people with
-    sufficient privileges are allowed to install applications anyway. On systems where the
-    use of shell extensions is not restricted registration failures because of insufficient
-    prviliges have no negative effect because the shell extensions will work anyhow.
-*/
-
-#ifdef _MSC_VER
-#pragma warning(push, 1) /* disable warnings within system headers */
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <msiquery.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#include <malloc.h>
-
-#ifdef UNICODE
-#define _UNICODE
-#endif
-#include <tchar.h>
-
-struct RegistryEntry
-{
-    TCHAR* Key;
-    TCHAR* Value;
-};
-
-RegistryEntry ColumnHandler = { TEXT("{C52AF81D-F7A0-4AAB-8E87-F80A60CCD396}"), TEXT("LibreOffice Column Handler") };
-RegistryEntry InfotipHandler = { TEXT("{087B3AE3-E237-4467-B8DB-5A38AB959AC9}"), TEXT("LibreOffice Infotip Handler") };
-RegistryEntry PropHandler = { TEXT("{63542C48-9552-494A-84F7-73AA6A7C99C1}"), TEXT("LibreOffice Property Sheet Handler") };
-RegistryEntry ThumbViewer = { TEXT("{3B092F0C-7696-40E3-A80F-68D74DA84210}"), TEXT("LibreOffice Thumbnail Viewer") };
-
-BOOL GetMsiProp( MSIHANDLE hMSI, const char* pPropName, char** ppValue )
-{
-    DWORD sz = 0;
-       if ( MsiGetProperty( hMSI, pPropName, 0, &sz ) == ERROR_MORE_DATA )
-       {
-           sz++;
-           DWORD nbytes = sz * sizeof( char );
-           char* buff = reinterpret_cast<char*>( malloc( nbytes ) );
-           ZeroMemory( buff, nbytes );
-           MsiGetProperty( hMSI, pPropName, buff, &sz );
-           *ppValue = buff;
-
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-bool IsVersionNT64( MSIHANDLE hMSI )
-{
-    char* pVal = NULL;
-
-    if ( GetMsiProp( hMSI, "VersionNT64", &pVal ) && pVal )
-    {
-        free( pVal );
-        return true;
-    }
-
-    return false;
-}
-
-
-
-
-/*
-    Called during installation when the module "Windows Explorer Extensions" is
-    selected.
-*/
-extern "C" UINT __stdcall InstallExecSequenceEntry(MSIHANDLE hMSI)
-{
-    //MessageBox(NULL, TEXT("InstallExecSequenceEntry"), TEXT("Pythonmsi"), MB_OK | MB_ICONINFORMATION);
-    HKEY hKey;
-
-
-// to provide windows xp as build systems for mingw we need to define KEY_WOW64_64KEY
-// in mingw 3.13 KEY_WOW64_64KEY isn't available < Win2003 systems.
-// Also defined in setup_native\source\win32\customactions\reg64\reg64.cxx,source\win32\customactions\shellextensions\shellextensions.cxx and
-// extensions\source\activex\main\so_activex.cpp
-#ifndef KEY_WOW64_64KEY
-    #define KEY_WOW64_64KEY (0x0100)
-#endif
-
-    if (IsVersionNT64(hMSI))
-    {
-        // Open Windows 64 Bit Registry
-        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),0, KEY_WRITE | KEY_WOW64_64KEY, &hKey) == ERROR_SUCCESS)
-        {
-            RegSetValueEx(hKey, ColumnHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ColumnHandler.Value), _tcslen(ColumnHandler.Value) + 1);
-            RegSetValueEx(hKey, InfotipHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(InfotipHandler.Value), _tcslen(InfotipHandler.Value) + 1);
-            RegSetValueEx(hKey, PropHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(PropHandler.Value), _tcslen(PropHandler.Value) + 1);
-            RegSetValueEx(hKey, ThumbViewer.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ThumbViewer.Value), _tcslen(ThumbViewer.Value) + 1);
-
-            RegCloseKey(hKey);
-        }
-
-        // Open Windows 32 Bit Registry on Win64 machine
-
-        if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"),0, KEY_WRITE, &hKey ) == ERROR_SUCCESS)
-        {
-            RegSetValueEx(hKey, ColumnHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ColumnHandler.Value), _tcslen(ColumnHandler.Value) + 1);
-            RegSetValueEx(hKey, InfotipHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(InfotipHandler.Value), _tcslen(InfotipHandler.Value) + 1);
-            RegSetValueEx(hKey, PropHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(PropHandler.Value), _tcslen(PropHandler.Value) + 1);
-            RegSetValueEx(hKey, ThumbViewer.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ThumbViewer.Value), _tcslen(ThumbViewer.Value) + 1);
-
-            RegCloseKey(hKey);
-        }
-
-
-    } else
-    {
-        if (RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"), &hKey) == ERROR_SUCCESS)
-        {
-            RegSetValueEx(hKey, ColumnHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ColumnHandler.Value), _tcslen(ColumnHandler.Value) + 1);
-            RegSetValueEx(hKey, InfotipHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(InfotipHandler.Value), _tcslen(InfotipHandler.Value) + 1);
-            RegSetValueEx(hKey, PropHandler.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(PropHandler.Value), _tcslen(PropHandler.Value) + 1);
-            RegSetValueEx(hKey, ThumbViewer.Key, 0, REG_SZ, reinterpret_cast<const BYTE*>(ThumbViewer.Value), _tcslen(ThumbViewer.Value) + 1);
-
-            RegCloseKey(hKey);
-        }
-    }
-    return ERROR_SUCCESS;
-}
-
-/*
-    Called during deinstallation when the module "Windows Explorer Extensions" has
-    been installed.
-*/
-extern "C" UINT __stdcall DeinstallExecSequenceEntry(MSIHANDLE)
-{
-    //MessageBox(NULL, TEXT("DeinstallExecSequenceEntry"), TEXT("Pythonmsi"), MB_OK | MB_ICONINFORMATION);
-    HKEY hKey;
-    if (RegOpenKey(HKEY_LOCAL_MACHINE, TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved"), &hKey) == ERROR_SUCCESS)
-    {
-        RegDeleteValue(hKey, ColumnHandler.Key);
-        RegDeleteValue(hKey, InfotipHandler.Key);
-        RegDeleteValue(hKey, PropHandler.Key);
-        RegDeleteValue(hKey, ThumbViewer.Key);
-
-        RegCloseKey(hKey);
-    }
-    return ERROR_SUCCESS;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/bin/modules/installer/windows/component.pm b/solenv/bin/modules/installer/windows/component.pm
index 7238260..cd87209 100644
--- a/solenv/bin/modules/installer/windows/component.pm
+++ b/solenv/bin/modules/installer/windows/component.pm
@@ -192,7 +192,6 @@ sub get_registry_component_directory
 
 ##############################################################
 # Returning the attributes for a file component.
-# Always 8 in this first try?
 ##############################################################
 
 sub get_file_component_attributes
@@ -244,10 +243,10 @@ sub get_file_component_attributes
         $attributes = 4;    # Files in shellnew dir and in non advertised startmenu entries must have user registry key as KeyPath
     }
 
-    # Adding 256, if this is a 64 bit installation set.
-    if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; }
+    # Setting msidbComponentAttributes64bit, if this is a 64 bit installation set.
+    if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes |= 256; }
 
-    return $attributes
+    return $attributes;
 }
 
 ##############################################################
@@ -264,12 +263,16 @@ sub get_registry_component_attributes
 
     $attributes = 4;
 
-    # Adding 256, if this is a 64 bit installation set.
-    if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; }
+    # Setting msidbComponentAttributes64bit, if this is a 64 bit installation set.
+    if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes |= 256; }
 
-    if ( exists($installer::globals::dontdeletecomponents{$componentname}) ) { $attributes = $attributes + 16; }
+    # Setting msidbComponentAttributes64bit for 64 bit shell extension in 32 bit installer, too
+    if ( $componentname =~ m/winexplorerext_x64/ ) { $attributes |= 256; }
 
-    return $attributes
+    # Setting msidbComponentAttributesPermanent
+    if ( exists($installer::globals::dontdeletecomponents{$componentname}) ) { $attributes |= 16; }
+
+    return $attributes;
 }
 
 ##############################################################
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index 176e835..6b75dec 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -494,16 +494,6 @@ sub write_idt_header
         push(@{$idtref}, $oneline);
     }
 
-    if ( $definestring eq "reg64" )
-    {
-        $oneline = "Registry\tRoot\tKey\tName\tValue\tComponent_\n";
-        push(@{$idtref}, $oneline);
-        $oneline = "s72\ti2\tl255\tL255\tL0\ts72\n";
-        push(@{$idtref}, $oneline);
-        $oneline = "Reg64\tRegistry\n";
-        push(@{$idtref}, $oneline);
-    }
-
     if ( $definestring eq "createfolder" )
     {
         $oneline = "Directory_\tComponent_\n";
diff --git a/solenv/bin/modules/installer/windows/registry.pm b/solenv/bin/modules/installer/windows/registry.pm
index 8312e56..ab0371b 100644
--- a/solenv/bin/modules/installer/windows/registry.pm
+++ b/solenv/bin/modules/installer/windows/registry.pm
@@ -375,10 +375,8 @@ sub create_registry_table
         my $onelanguage = ${$languagesarrayref}[$m];
 
         my @registrytable = ();
-        my @reg64table = ();
 
         installer::windows::idtglobal::write_idt_header(\@registrytable, "registry");
-        installer::windows::idtglobal::write_idt_header(\@reg64table, "reg64");
 
         for ( my $i = 0; $i <= $#{$registryref}; $i++ )
         {
@@ -397,7 +395,6 @@ sub create_registry_table
             $registry{'Key'} = get_registry_key($oneregistry, $allvariableshashref);
             $registry{'Name'} = get_registry_name($oneregistry, $allvariableshashref);
             $registry{'Value'} = get_registry_value($oneregistry, $allvariableshashref);
-            $registry{'Val64'} = get_registry_val64($oneregistry, $allvariableshashref);
             $registry{'Component_'} = get_registry_component($oneregistry, $allvariableshashref);
 
             # Collecting all components
@@ -432,11 +429,7 @@ sub create_registry_table
             my $oneline = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t"
                         . $registry{'Name'} . "\t" . $registry{'Value'} . "\t" . $registry{'Component_'} . "\n";
 
-            my $oneline64 = $registry{'Registry'} . "\t" . $registry{'Root'} . "\t" . $registry{'Key'} . "\t"
-                        . $registry{'Name'} . "\t" . $registry{'Val64'} . "\t" . $registry{'Component_'} . "\n";
-
-            if ( ! ( $style =~ /\bX64_ONLY\b/ )) { push(@registrytable, $oneline); }    # standard registry table for 32 Bit
-            if (( $style =~ /\bX64\b/ ) || ( $style =~ /\bX64_ONLY\b/ )) { push(@reg64table , $oneline64); }
+            push(@registrytable, $oneline);
         }
 
         # If there are added user registry keys for files collected in
@@ -453,11 +446,6 @@ sub create_registry_table
         installer::files::save_file($registrytablename ,\@registrytable);
         my $infoline = "Created idt file: $registrytablename\n";
         push(@installer::globals::logfileinfo, $infoline);
-
-        $registrytablename = $basedir . $installer::globals::separator . "Reg64.idt" . "." . $onelanguage;
-        installer::files::save_file($registrytablename ,\@reg64table );
-        $infoline = "Created idt file: $registrytablename\n";
-        push(@installer::globals::logfileinfo, $infoline);
     }
 }
 
commit 22a29c2060355626ff0cba6c6d0ae70b8e2bbad3
Author: Andras Timar <atimar at suse.com>
Date:   Tue Jun 5 12:35:41 2012 +0200

    silence warnings
    
    Change-Id: Ibc6addfe5eacf4a9e23f6f26830f5a1f9bf77594

diff --git a/solenv/bin/modules/installer/windows/mergemodule.pm b/solenv/bin/modules/installer/windows/mergemodule.pm
index e60702b..bc12e11 100755
--- a/solenv/bin/modules/installer/windows/mergemodule.pm
+++ b/solenv/bin/modules/installer/windows/mergemodule.pm
@@ -235,7 +235,7 @@ sub merge_mergemodules_into_msi_database
 
                 # Determining name of cabinet file in installation set
                 my $cabfilename = $mergemodule->{'Cabfilename'};
-                installer::packagelist::resolve_packagevariables(\$cabfilename, $allvariables, 0);
+                if ( $cabfilename ) { installer::packagelist::resolve_packagevariables(\$cabfilename, $allvariables, 0); }
 
                 # Analyzing styles
                 # Flag REMOVE_FILE_TABLE is required for msvc9 Merge-Module, because otherwise msidb.exe
@@ -317,7 +317,7 @@ sub merge_mergemodules_into_msi_database
                 $installer::globals::mergemodules{$mergegid} = \%onemergemodulehash;
 
                 # Collecting all cab files, to copy them into installation set
-                $installer::globals::copy_msm_files{$cabfilename} = $onemergemodulehash{'cabinetfile'};
+                if ( $cabfilename ) { $installer::globals::copy_msm_files{$cabfilename} = $onemergemodulehash{'cabinetfile'}; }
 
                 chdir($from);
             }


More information about the Libreoffice-commits mailing list