summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--android/experimental/DocumentLoader/Makefile1
-rw-r--r--android/experimental/LibreOffice4Android/Makefile1
-rw-r--r--android/qa/desktop/Makefile1
-rw-r--r--ios/CustomTarget_Viewer_app.mk1
-rwxr-xr-xscp2/inc/macros.inc11
-rw-r--r--scp2/source/activex/file_activex.scp7
-rw-r--r--scp2/source/calc/registryitem_calc.scp1
-rw-r--r--scp2/source/draw/registryitem_draw.scp1
-rw-r--r--scp2/source/impress/registryitem_impress.scp1
-rw-r--r--scp2/source/ooo/common_brand.scp20
-rw-r--r--scp2/source/ooo/directory_ooo_macosx.scp1
-rw-r--r--scp2/source/ooo/file_library_ooo.scp15
-rw-r--r--scp2/source/ooo/file_ooo.scp9
-rw-r--r--scp2/source/ooo/module_hidden_ooo.scp1
-rw-r--r--scp2/source/ooo/windowscustomaction_ooo.scp69
-rw-r--r--scp2/source/smoketest/smoketest.scp1
-rw-r--r--scp2/source/writer/registryitem_writer.scp1
-rw-r--r--setup_native/prj/build.lst1
-rw-r--r--setup_native/source/win32/customactions/languagepacks/respintest.cxx33
-rw-r--r--setup_native/source/win32/customactions/patch/exports.dxp8
-rw-r--r--setup_native/source/win32/customactions/patch/makefile.mk75
-rw-r--r--setup_native/source/win32/customactions/patch/swappatchfiles.cxx717
-rw-r--r--solenv/bin/modules/installer.pm78
-rw-r--r--solenv/bin/modules/installer/archivefiles.pm67
-rw-r--r--solenv/bin/modules/installer/control.pm1
-rw-r--r--solenv/bin/modules/installer/epmfile.pm468
-rw-r--r--solenv/bin/modules/installer/globals.pm6
-rw-r--r--solenv/bin/modules/installer/parameter.pm31
-rw-r--r--solenv/bin/modules/installer/scriptitems.pm67
-rwxr-xr-xsolenv/bin/modules/installer/simplepackage.pm16
-rw-r--r--solenv/bin/modules/installer/systemactions.pm1
-rw-r--r--solenv/bin/modules/installer/windows/createfolder.pm2
-rw-r--r--solenv/bin/modules/installer/windows/directory.pm5
-rw-r--r--solenv/bin/modules/installer/windows/feature.pm1
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm29
-rw-r--r--solenv/bin/modules/installer/windows/inifile.pm19
-rwxr-xr-xsolenv/bin/modules/installer/windows/mergemodule.pm2
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm16
-rw-r--r--solenv/bin/modules/installer/windows/property.pm40
-rw-r--r--solenv/bin/modules/installer/windows/upgrade.pm109
-rw-r--r--solenv/bin/modules/installer/worker.pm383
-rw-r--r--solenv/bin/modules/installer/ziplist.pm3
-rwxr-xr-xsolenv/bin/oochkpatch23
-rw-r--r--solenv/bin/oochkpatch.pl292
44 files changed, 73 insertions, 2562 deletions
diff --git a/android/experimental/DocumentLoader/Makefile b/android/experimental/DocumentLoader/Makefile
index 6cd8a294adb5..193184efdd4c 100644
--- a/android/experimental/DocumentLoader/Makefile
+++ b/android/experimental/DocumentLoader/Makefile
@@ -123,7 +123,6 @@ copy-stuff:
echo 'AllLanguages=en-US' >> assets/program/versionrc
echo 'BuildVersion=' >> assets/program/versionrc
echo 'buildid=dead-beef' >> assets/program/versionrc
- echo 'ProductBuildid=3' >> assets/program/versionrc
echo 'ProductMajor=360' >> assets/program/versionrc
echo 'ProductMinor=1' >> assets/program/versionrc
echo 'ReferenceOOoMajorMinor=3.6' >> assets/program/versionrc
diff --git a/android/experimental/LibreOffice4Android/Makefile b/android/experimental/LibreOffice4Android/Makefile
index eded9e64c4e6..284e9c38b384 100644
--- a/android/experimental/LibreOffice4Android/Makefile
+++ b/android/experimental/LibreOffice4Android/Makefile
@@ -100,7 +100,6 @@ copy-stuff:
echo 'AllLanguages=en-US' >> assets/program/versionrc
echo 'BuildVersion=' >> assets/program/versionrc
echo 'buildid=dead-beef' >> assets/program/versionrc
- echo 'ProductBuildid=3' >> assets/program/versionrc
echo 'ProductMajor=360' >> assets/program/versionrc
echo 'ProductMinor=1' >> assets/program/versionrc
echo 'ReferenceOOoMajorMinor=3.6' >> assets/program/versionrc
diff --git a/android/qa/desktop/Makefile b/android/qa/desktop/Makefile
index bec3908bb200..37f283e32a5a 100644
--- a/android/qa/desktop/Makefile
+++ b/android/qa/desktop/Makefile
@@ -67,7 +67,6 @@ buildrcs:
echo "BuildVersion=" >> assets/program/versionrc
echo "buildid=dead-beef" >> assets/program/versionrc
echo "ExtensionUpdateURL=http://updateexte.libreoffice.org/ExtensionUpdateService/check.Update" >> assets/program/versionrc
- echo "ProductBuildid=3" >> assets/program/versionrc
echo "ProductMajor=360" >> assets/program/versionrc
echo "ProductMinor=1" >> assets/program/versionrc
echo "ReferenceOOoMajorMinor=3.6" >> assets/program/versionrc
diff --git a/ios/CustomTarget_Viewer_app.mk b/ios/CustomTarget_Viewer_app.mk
index 8c05728c4a8b..2ccbf841284b 100644
--- a/ios/CustomTarget_Viewer_app.mk
+++ b/ios/CustomTarget_Viewer_app.mk
@@ -123,7 +123,6 @@ $(SCRIPT_OUTPUT_FILE_0) : $(call gb_Executable_get_target,Viewer)
echo 'AllLanguages=en-US' && \
echo 'BuildVersion=' && \
echo 'buildid=$(buildid)' && \
- echo 'ProductBuildid=3' && \
echo 'ProductMajor=360' && \
echo 'ProductMinor=1' && \
: ) > $(appdir)/program/versionrc
diff --git a/scp2/inc/macros.inc b/scp2/inc/macros.inc
index c10a136e915a..fd336d01b67f 100755
--- a/scp2/inc/macros.inc
+++ b/scp2/inc/macros.inc
@@ -100,11 +100,6 @@
Styles = (PACKED); \
Dir = SCP2_OOO_BIN_DIR
-#define PACKED_LIB_FILE_BODY_PATCH \
- LIB_FILE_BODY; \
- Styles = (PACKED,PATCH); \
- Dir = SCP2_OOO_BIN_DIR
-
#define STD_LIB_FILE(id,name) \
File id \
Name = LIBNAME(name); \
@@ -117,12 +112,6 @@
PACKED_LIB_FILE_BODY; \
End
-#define SPECIAL_LIB_FILE_PATCH(id,name) \
- File id \
- Name = SPECIAL_NAME(name); \
- PACKED_LIB_FILE_BODY_PATCH; \
- End
-
#define STD_RES_FILE(id,name) \
File id \
TXT_FILE_BODY; \
diff --git a/scp2/source/activex/file_activex.scp b/scp2/source/activex/file_activex.scp
index 2ff8583cd54a..680480dcc552 100644
--- a/scp2/source/activex/file_activex.scp
+++ b/scp2/source/activex/file_activex.scp
@@ -53,11 +53,4 @@ File gid_File_Lib_Regactivex_Msi
Name = "regactivex.dll";
End
-File gid_File_Lib_Regpatchactivex_Msi
- LIB_FILE_BODY;
- Styles = (PACKED,PATCH,PATCH_ONLY,BINARYTABLE,BINARYTABLE_ONLY,DONTRENAMEINPATCH);
- Dir = SCP2_OOO_BIN_DIR;
- Name = "regpatchactivex.dll";
-End
-
#endif // WITH_ACTIVEX_COMPONENT
diff --git a/scp2/source/calc/registryitem_calc.scp b/scp2/source/calc/registryitem_calc.scp
index 6f886a48506f..d5b5af2aee4a 100644
--- a/scp2/source/calc/registryitem_calc.scp
+++ b/scp2/source/calc/registryitem_calc.scp
@@ -835,7 +835,6 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
ModuleID = gid_Module_Root;
Name = ".fods";
Value = "LibreOffice.CalcDocument.1";
- Styles = (PATCH);
End
RegistryItem gid_Regitem_Fods_Contenttype
diff --git a/scp2/source/draw/registryitem_draw.scp b/scp2/source/draw/registryitem_draw.scp
index 2caa0bc5a28a..4e900162f1f7 100644
--- a/scp2/source/draw/registryitem_draw.scp
+++ b/scp2/source/draw/registryitem_draw.scp
@@ -843,7 +843,6 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
ModuleID = gid_Module_Root;
Name = ".fodg";
Value = "LibreOffice.DrawDocument.1";
- Styles = (PATCH);
End
RegistryItem gid_Regitem_fodg_KindMap
diff --git a/scp2/source/impress/registryitem_impress.scp b/scp2/source/impress/registryitem_impress.scp
index 0c76dbd1fc01..8fa7ee966623 100644
--- a/scp2/source/impress/registryitem_impress.scp
+++ b/scp2/source/impress/registryitem_impress.scp
@@ -864,7 +864,6 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
ModuleID = gid_Module_Root;
Name = ".fodp";
Value = "LibreOffice.ImpressDocument.1";
- Styles = (PATCH);
End
RegistryItem gid_Regitem_Fodp_Contenttype
diff --git a/scp2/source/ooo/common_brand.scp b/scp2/source/ooo/common_brand.scp
index 9582f7650019..eae79e718bce 100644
--- a/scp2/source/ooo/common_brand.scp
+++ b/scp2/source/ooo/common_brand.scp
@@ -529,7 +529,7 @@ End
File gid_File_Bin_QStart_Bin
BIN_FILE_BODY;
Dir = gid_Brand_Dir_Program;
- Styles = (PACKED, PATCH);
+ Styles = (PACKED);
Name = "oosplash";
End
@@ -1016,15 +1016,6 @@ ProfileItem gid_Brand_Profileitem_Version_Productminor
Value = "<productminor>";
End
-ProfileItem gid_Brand_Profileitem_Version_Productbuildid
- ProfileID = gid_Brand_Profile_Version_Ini;
- ModuleID = gid_Module_Root_Brand;
- Section = "Version";
- Order = 12;
- Key = "ProductBuildid";
- Value = "<productbuildid>";
-End
-
ProfileItem gid_Brand_Profileitem_Version_Alllanguages
ProfileID = gid_Brand_Profile_Version_Ini;
ModuleID = gid_Module_Root_Brand;
@@ -1332,15 +1323,6 @@ ProfileItem gid_Brand_Profileitem_Setup_Upgradecode
End
#endif
-ProfileItem gid_Brand_Profileitem_Setup_Productbuildid
- ProfileID = gid_Brand_Profile_Setup_Ini;
- ModuleID = gid_Module_Root_Brand;
- Section = "Bootstrap";
- Order = 8;
- Key = "ProductBuildid";
- Value = "<productbuildid>";
-End
-
ProfileItem gid_Brand_Profileitem_Setup_Buildid
ProfileID = gid_Brand_Profile_Setup_Ini;
ModuleID = gid_Module_Root_Brand;
diff --git a/scp2/source/ooo/directory_ooo_macosx.scp b/scp2/source/ooo/directory_ooo_macosx.scp
index ab1138d70c44..c8b160e8659d 100644
--- a/scp2/source/ooo/directory_ooo_macosx.scp
+++ b/scp2/source/ooo/directory_ooo_macosx.scp
@@ -32,7 +32,6 @@ Directory gid_Dir_Bundle
ParentID = PD_PROGDIR;
HostName = "%PRODUCTNAME.app";
LangPackHostName = "%PRODUCTNAME Language Pack.app";
- PatchHostName = "%PRODUCTNAME Patch.app";
End
Directory gid_Dir_Bundle_Contents
diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp
index a804041ab874..65a346f77469 100644
--- a/scp2/source/ooo/file_library_ooo.scp
+++ b/scp2/source/ooo/file_library_ooo.scp
@@ -753,17 +753,6 @@ End
#endif
-#ifdef WNT
-
-File gid_File_Lib_Patchmsi
- LIB_FILE_BODY;
- Name = "patchmsi.dll";
- Dir = SCP2_OOO_BIN_DIR;
- Styles = (PACKED,PATCH,PATCH_ONLY,BINARYTABLE,BINARYTABLE_ONLY,DONTRENAMEINPATCH);
-End
-
-#endif
-
STD_LIB_FILE( gid_File_Lib_Lng, lng)
File gid_File_Lib_Localedata_En
@@ -1424,10 +1413,10 @@ STD_LIB_FILE( gid_File_Lib_Unoxml, unoxml )
STD_LIB_FILE( gid_File_Lib_AVMedia, avmedia )
#if defined ENABLE_GSTREAMER
-SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer, avmediagst )
+SPECIAL_LIB_FILE( gid_File_Lib_AVMediaGStreamer, avmediagst )
#endif
#if defined ENABLE_GSTREAMER_0_10
-SPECIAL_LIB_FILE_PATCH( gid_File_Lib_AVMediaGStreamer_0_10, avmediagst_0_10 )
+SPECIAL_LIB_FILE( gid_File_Lib_AVMediaGStreamer_0_10, avmediagst_0_10 )
#endif
#if defined WNT
#ifdef ENABLE_DIRECTX
diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp
index e973a5823b07..68fe44839f37 100644
--- a/scp2/source/ooo/file_ooo.scp
+++ b/scp2/source/ooo/file_ooo.scp
@@ -1122,15 +1122,6 @@ File gid_File_Xsl_Import_Wordml_Wordml2ooo_Props
Name = "/xslt/import/wordml/wordml2ooo_props.xsl";
End
-#ifdef WNT
-File gid_File_Txt_Patchfiles
- TXT_FILE_BODY;
- Name = "patchlist.txt";
- Dir = gid_Brand_Dir_Program;
- Styles = (PACKED,PATCH,PATCH_ONLY,DONTRENAMEINPATCH);
-End
-#endif
-
File gid_Starregistry_Services_Rdb
TXT_FILE_BODY;
Name = "services.rdb";
diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp
index 267105189160..0efe8b65a60e 100644
--- a/scp2/source/ooo/module_hidden_ooo.scp
+++ b/scp2/source/ooo/module_hidden_ooo.scp
@@ -449,7 +449,6 @@ Module gid_Module_Root_Files_5
gid_File_Lib_Msvcp70,
gid_File_Lib_Msvcr70,
gid_File_Lib_Ole,
- gid_File_Lib_Patchmsi,
gid_File_Lib_Reg4allmsdoc,
gid_File_Lib_Qslnkmsi,
gid_File_Lib_Sdqsmsi,
diff --git a/scp2/source/ooo/windowscustomaction_ooo.scp b/scp2/source/ooo/windowscustomaction_ooo.scp
index b489c3298b5f..a52a07bea4a7 100644
--- a/scp2/source/ooo/windowscustomaction_ooo.scp
+++ b/scp2/source/ooo/windowscustomaction_ooo.scp
@@ -244,26 +244,6 @@ WindowsCustomAction gid_Customaction_Patch_Regpatchactivex_Patchactivexcontrol
Assignment1 = ("InstallExecuteSequence", "\&FEATURETEMPLATE=3", "end");
End
-WindowsCustomAction gid_Customaction_Patch_SetProductInstallModeAction
- Name = "SetProductInstallModeAction";
- Typ = "321";
- Source = "patchmsi.dll";
- Target = "SetProductInstallMode";
- Inbinarytable = 1;
- Assignment1 = ("InstallExecuteSequence", "Not Installed", "FindRelatedProducts");
- Assignment2 = ("InstallUISequence", "Not Installed", "FindRelatedProducts");
-End
-
-WindowsCustomAction gid_Customaction_Patch_InstallExchangeFiles
- Name = "InstallExchangeFiles";
- Typ = "65";
- Source = "patchmsi.dll";
- Target = "InstallPatchedFiles";
- Inbinarytable = 1;
- Assignment1 = ("InstallExecuteSequence", "Not Installed", "behind_InstallFinalize");
- Assignment2 = ("AdminExecuteSequence", "", "behind_InstallFinalize");
-End
-
WindowsCustomAction gid_Customaction_Langpack_Register_Extensions
Name = "RegisterExtensions";
Typ = "65";
@@ -274,34 +254,6 @@ WindowsCustomAction gid_Customaction_Langpack_Register_Extensions
Assignment2 = ("AdminExecuteSequence", "", "end");
End
-WindowsCustomAction gid_Customaction_Patch_SetFeatureState
- Name = "SetFeatureState";
- Typ = "65";
- Source = "patchmsi.dll";
- Target = "SetFeatureState";
- Inbinarytable = 1;
- Assignment1 = ("InstallExecuteSequence", "Not Installed", "SetNewFeatureState");
-End
-
-WindowsCustomAction gid_Customaction_Patch_DeinstallExchangeFiles
- Name = "DeinstallExchangeFiles";
- Typ = "65";
- Source = "patchmsi.dll";
- Target = "UninstallPatchedFiles";
- Inbinarytable = 1;
- Assignment1 = ("InstallExecuteSequence", "Installed", "RemoveIniValues");
-End
-
-WindowsCustomAction gid_Customaction_Patch_Shutdownquickstarter
- Name = "ShutDownQuickstarter";
- Typ = "65";
- Source = "patchmsi.dll";
- Target = "ShutDownQuickstarter";
- Inbinarytable = 1;
- Assignment1 = ("ControlEvent", "DestinationFolder", "Next", "DoAction", "ShutDownQuickstarter", "1", "0");
- Assignment2 = ("InstallExecuteSequence", "", "IsolateComponents");
-End
-
WindowsCustomAction gid_Customaction_CheckPatchList
Name = "CheckPatchList";
Typ = "65";
@@ -311,27 +263,6 @@ WindowsCustomAction gid_Customaction_CheckPatchList
Assignment1 = ("InstallExecuteSequence", "PATCH", "Patch1NotInstalled");
End
-WindowsCustomAction gid_Customaction_Patch_SetUserInstallMode
- Name = "SetUserInstallMode";
- Typ = "321";
- Source = "patchmsi.dll";
- Target = "GetUserInstallMode";
- Inbinarytable = 1;
- Assignment1 = ("ControlEvent", "InstallWelcome", "Next", "DoAction", "SetUserInstallMode", "1", "1");
- Assignment2 = ("ControlEvent", "InstallChangeFolder", "OK", "DoAction", "SetUserInstallMode", "1", "8");
- Assignment3 = ("ControlCondition", "DestinationFolder", "Next", "Enable", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
- Assignment4 = ("ControlCondition", "DestinationFolder", "Next", "Disable", "INVALIDDIRECTORY Or PATCHISOLDER Or ISWRONGPRODUCT");
- Assignment5 = ("ControlCondition", "DestinationFolder", "LabelStartInstall", "Show", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
- Assignment6 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir", "Show", "INVALIDDIRECTORY");
- Assignment7 = ("ControlCondition", "DestinationFolder", "LabelPatchOlder", "Show", "PATCHISOLDER");
- Assignment8 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct", "Show", "ISWRONGPRODUCT");
- Assignment9 = ("ControlCondition", "DestinationFolder", "LabelStartInstall2", "Show", "NOT INVALIDDIRECTORY And NOT PATCHISOLDER And NOT ISWRONGPRODUCT");
- Assignment10 = ("ControlCondition", "DestinationFolder", "LabelInvalidDir2", "Show", "INVALIDDIRECTORY");
- Assignment11 = ("ControlCondition", "DestinationFolder", "LabelPatchOlder2", "Show", "PATCHISOLDER");
- Assignment12 = ("ControlCondition", "DestinationFolder", "LabelWrongProduct2", "Show", "ISWRONGPRODUCT");
- Assignment13 = ("InstallExecuteSequence", "Not Installed", "PatchIsOlder");
-End
-
WindowsCustomAction gid_Customaction_Langpack_SetUserInstallMode
Name = "SetUserInstallMode";
Typ = "65";
diff --git a/scp2/source/smoketest/smoketest.scp b/scp2/source/smoketest/smoketest.scp
index 7c368c38cb47..e233a0efb073 100644
--- a/scp2/source/smoketest/smoketest.scp
+++ b/scp2/source/smoketest/smoketest.scp
@@ -62,7 +62,6 @@ Directory gid_Test_Dir_Bundle
ParentID = PD_PROGDIR;
HostName = "%PRODUCTNAME.app";
LangPackHostName = "%PRODUCTNAME Language Pack.app";
- PatchHostName = "%PRODUCTNAME Patch.app";
End
Directory gid_Test_Dir_Bundle_Contents
diff --git a/scp2/source/writer/registryitem_writer.scp b/scp2/source/writer/registryitem_writer.scp
index 2de4a8bb6ebd..8242f770da19 100644
--- a/scp2/source/writer/registryitem_writer.scp
+++ b/scp2/source/writer/registryitem_writer.scp
@@ -1008,7 +1008,6 @@ RegistryItem gid_Regitem_Software_Manufacturer_Productname_Productversion_Capabi
ModuleID = gid_Module_Root;
Name = ".fodt";
Value = "LibreOffice.WriterDocument.1";
- Styles = (PATCH);
End
RegistryItem gid_Regitem_Fodt_Contenttype
diff --git a/setup_native/prj/build.lst b/setup_native/prj/build.lst
index 1c3bf5301ce1..fb45ce854aff 100644
--- a/setup_native/prj/build.lst
+++ b/setup_native/prj/build.lst
@@ -15,7 +15,6 @@ pk setup_native\source\win32\customactions\quickstarter nmake - w sn_quic
pk setup_native\source\win32\customactions\shellextensions nmake - w sn_shellextensions sn_tools.w NULL
pk setup_native\source\win32\customactions\indexingfilter nmake - w sn_indexingfilter NULL
pk setup_native\source\win32\customactions\languagepacks nmake - w sn_languagepacks sn_shellextensions.w sn_tools.w NULL
-pk setup_native\source\win32\customactions\patch nmake - w sn_patch sn_languagepacks.w sn_shellextensions.w sn_quickstarter.w sn_tools.w NULL
pk setup_native\source\win32\wintools\makecab nmake - u sn_makecab NULL
pk setup_native\source\win32\wintools\msidb nmake - u sn_msidb NULL
pk setup_native\source\win32\wintools\msiinfo nmake - u sn_msiinfo NULL
diff --git a/setup_native/source/win32/customactions/languagepacks/respintest.cxx b/setup_native/source/win32/customactions/languagepacks/respintest.cxx
index 3362a7ad7e82..f757a880f912 100644
--- a/setup_native/source/win32/customactions/languagepacks/respintest.cxx
+++ b/setup_native/source/win32/customactions/languagepacks/respintest.cxx
@@ -150,38 +150,7 @@ extern "C" UINT __stdcall GetUserInstallMode(MSIHANDLE handle)
return ERROR_SUCCESS;
}
- // 3. Only for patch: Comparing "PRODUCTMINOR from property table and "ProductMinor" from InfoFile
-
- string isPatch = GetMsiProperty(handle, TEXT("ISPATCH"));
-
- if (isPatch=="1")
- {
- string ProductMinor = GetMsiProperty(handle, TEXT("PRODUCTBUILDID"));
- int PatchProductMinor = atoi(ProductMinor.c_str());
-
- szValue[0] = '\0';
-
- GetPrivateProfileString(
- TEXT("Bootstrap"),
- TEXT("ProductBuildid"),
- TEXT("8918"),
- szValue,
- SAL_N_ELEMENTS(szValue),
- sSetupiniPath.c_str()
- );
-
- int InstalledProductMinor = atoi(szValue);
-
- if ( InstalledProductMinor >= PatchProductMinor )
- {
- SetMsiProperty( handle, TEXT("PATCHISOLDER"), TEXT("YES") );
- // MessageBox(NULL, "PATCHISOLDER set", "DEBUG", MB_OK);
- SetMsiErrorCode( MSI_ERROR_PATCHISOLDER );
- return ERROR_SUCCESS;
- }
- }
-
- // 4. Setting property ALLUSERS with value from "setup.ini"
+ // 3. Setting property ALLUSERS with value from "setup.ini"
szValue[0] = '\0';
diff --git a/setup_native/source/win32/customactions/patch/exports.dxp b/setup_native/source/win32/customactions/patch/exports.dxp
deleted file mode 100644
index bb660772a68b..000000000000
--- a/setup_native/source/win32/customactions/patch/exports.dxp
+++ /dev/null
@@ -1,8 +0,0 @@
-InstallPatchedFiles
-UninstallPatchedFiles
-GetUserInstallMode
-SetProductInstallMode
-ShutDownQuickstarter
-SetFeatureState
-SetNewFeatureState
-ShowOnlineUpdateDialog
diff --git a/setup_native/source/win32/customactions/patch/makefile.mk b/setup_native/source/win32/customactions/patch/makefile.mk
deleted file mode 100644
index 81ff1c4878f7..000000000000
--- a/setup_native/source/win32/customactions/patch/makefile.mk
+++ /dev/null
@@ -1,75 +0,0 @@
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This file incorporates work covered by the following license notice:
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed
-# with this work for additional information regarding copyright
-# ownership. The ASF licenses this file to you under the Apache
-# License, Version 2.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.apache.org/licenses/LICENSE-2.0 .
-#
-
-PRJ=..$/..$/..$/..
-PRJNAME=setup_native
-TARGET=patchmsi
-
-# --- Settings -----------------------------------------------------
-
-ENABLE_EXCEPTIONS=TRUE
-NO_DEFAULT_STL=TRUE
-DYNAMIC_CRT=
-USE_DEFFILE=TRUE
-
-.INCLUDE : settings.mk
-
-# --- Files --------------------------------------------------------
-
-.IF "$(OS)"=="WNT" && "$(WINDOWS_SDK_HOME)"!=""
-
-UWINAPILIB=
-
-SLOFILES = \
- $(SLO)$/swappatchfiles.obj
-
-STDSHL += \
- $(ADVAPI32LIB)\
- $(MSILIB)\
- $(SHELL32LIB)
-
-.IF "$(COM)"=="GCC"
-STDSHL+= \
- $(KERNEL32LIB)\
- -lmsvcrt
-.ENDIF
-
-
-SHL1OBJS = $(SLOFILES) \
- $(SLO)$/respintest.obj \
- $(SLO)$/shutdown_quickstart.obj \
- $(SLO)$/quickstarter.obj \
- $(SLO)$/upgrade.obj \
- $(SLO)$/seterror.obj
-
-SHL1TARGET = $(TARGET)
-SHL1IMPLIB = i$(TARGET)
-
-SHL1DEF = $(MISC)$/$(SHL1TARGET).def
-SHL1DEPN = $(SLB)$/$(TARGET).lib
-SHL1BASE = 0x1c000000
-DEF1NAME=$(SHL1TARGET)
-DEF1EXPORTFILE=exports.dxp
-
-.ENDIF
-
-# --- Targets --------------------------------------------------------------
-
-.INCLUDE : target.mk
-
-# -------------------------------------------------------------------------
diff --git a/setup_native/source/win32/customactions/patch/swappatchfiles.cxx b/setup_native/source/win32/customactions/patch/swappatchfiles.cxx
deleted file mode 100644
index f2eb25428b6c..000000000000
--- a/setup_native/source/win32/customactions/patch/swappatchfiles.cxx
+++ /dev/null
@@ -1,717 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#define _WIN32_WINDOWS 0x0410
-
-#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 <assert.h>
-
-#ifdef UNICODE
-#define _UNICODE
-#define _tstring wstring
-#else
-#define _tstring string
-#endif
-#include <tchar.h>
-#include <string>
-#include <queue>
-#include <stdio.h>
-#include <sal/macros.h>
-
-#include <systools/win32/uwinapi.h>
-#include <../tools/seterror.hxx>
-
-#ifdef DEBUG
-inline void OutputDebugStringFormat( LPCTSTR pFormat, ... )
-{
- _TCHAR buffer[1024];
- va_list args;
-
- va_start( args, pFormat );
- _vsntprintf( buffer, SAL_N_ELEMENTS(buffer), pFormat, args );
- OutputDebugString( buffer );
-}
-#else
-static inline void OutputDebugStringFormat( LPCTSTR, ... )
-{
-}
-#endif
-
-static std::_tstring GetMsiProperty( MSIHANDLE handle, const std::_tstring& sProperty )
-{
- std::_tstring result;
- TCHAR szDummy[1] = TEXT("");
- DWORD nChars = 0;
-
- if ( MsiGetProperty( handle, sProperty.c_str(), szDummy, &nChars ) == ERROR_MORE_DATA )
- {
- DWORD nBytes = ++nChars * sizeof(TCHAR);
- LPTSTR buffer = reinterpret_cast<LPTSTR>(_alloca(nBytes));
- ZeroMemory( buffer, nBytes );
- MsiGetProperty(handle, sProperty.c_str(), buffer, &nChars);
- result = buffer;
- }
-
- return result;
-}
-
-// The provided GUID must be without surounding '{}'
-static std::_tstring GetGuidPart(const std::_tstring& guid, int index)
-{
- assert((guid.length() == 36) && "No GUID or wrong format!");
- assert(((index > -1) && (index < 5)) && "Out of range!");
-
- if (index == 0) return std::_tstring(guid.c_str(), 8);
- if (index == 1) return std::_tstring(guid.c_str() + 9, 4);
- if (index == 2) return std::_tstring(guid.c_str() + 14, 4);
- if (index == 3) return std::_tstring(guid.c_str() + 19, 4);
- if (index == 4) return std::_tstring(guid.c_str() + 24, 12);
-
- return std::_tstring();
-}
-
-static void Swap(char* p1, char* p2)
-{
- char tmp = *p1;
- *p1 = *p2;
- *p2 = tmp;
-}
-
-static std::_tstring Invert(const std::_tstring& str)
-{
- char* buff = reinterpret_cast<char*>(_alloca(str.length()));
- strncpy(buff, str.c_str(), str.length());
-
- char* front = buff;
- char* back = buff + str.length() - 1;
-
- while (front < back)
- Swap(front++, back--);
-
- return std::_tstring(buff, str.length());
-}
-
-// Convert the upgrade code (which is a GUID) according
-// to the way the windows installer does when writing it
-// to the registry
-// The first 8 bytes will be inverted, from the the last
-// 8 bytes always the nibbles will be inverted for further
-// details look in the MSDN under compressed registry keys
-static std::_tstring ConvertGuid(const std::_tstring& guid)
-{
- std::_tstring convertedGuid;
-
- std::_tstring part = GetGuidPart(guid, 0);
- convertedGuid = Invert(part);
-
- part = GetGuidPart(guid, 1);
- convertedGuid += Invert(part);
-
- part = GetGuidPart(guid, 2);
- convertedGuid += Invert(part);
-
- part = GetGuidPart(guid, 3);
- convertedGuid += Invert(std::_tstring(part.c_str(), 2));
- convertedGuid += Invert(std::_tstring(part.c_str() + 2, 2));
-
- part = GetGuidPart(guid, 4);
- int pos = 0;
- for (int i = 0; i < 6; i++)
- {
- convertedGuid += Invert(std::_tstring(part.c_str() + pos, 2));
- pos += 2;
- }
- return convertedGuid;
-}
-
-static inline bool IsSetMsiProperty(MSIHANDLE handle, const std::_tstring& sProperty)
-{
- std::_tstring value = GetMsiProperty(handle, sProperty);
- return (value.length() > 0);
-}
-
-static inline void UnsetMsiProperty(MSIHANDLE handle, const std::_tstring& sProperty)
-{
- MsiSetProperty(handle, sProperty.c_str(), NULL);
-}
-
-static inline void SetMsiProperty(MSIHANDLE handle, const std::_tstring& sProperty)
-{
- MsiSetProperty(handle, sProperty.c_str(), TEXT("1"));
-}
-
-static bool SwapFiles( const std::_tstring& sFileName1, const std::_tstring& sFileName2 )
-{
- std::_tstring sTempFileName = sFileName1 + TEXT(".tmp");
-
- bool fSuccess = true;
-
- //Try to move the original file to a temp file
- fSuccess = MoveFileExA( sFileName1.c_str(), sTempFileName.c_str(), MOVEFILE_REPLACE_EXISTING);
-
- if ( fSuccess )
- {
- fSuccess = MoveFileExA( sFileName2.c_str(), sFileName1.c_str(), MOVEFILE_REPLACE_EXISTING );
-
- if ( fSuccess )
- {
- fSuccess = MoveFileExA( sTempFileName.c_str(), sFileName2.c_str(),
- MOVEFILE_REPLACE_EXISTING );
- if ( !fSuccess )
- {
- MoveFileExA( sFileName1.c_str(), sFileName2.c_str(), MOVEFILE_REPLACE_EXISTING );
- }
- }
- else
- {
- MoveFileExA( sTempFileName.c_str(), sFileName1.c_str(), MOVEFILE_REPLACE_EXISTING );
- }
- }
- else
- {
- //It could be that there is no original file and therefore copying the original to a temp
- // file failed. Examine if there is no original and if so then move file2 to file1
-
- WIN32_FIND_DATA data;
- HANDLE hdl = FindFirstFile(sFileName1.c_str(), &data);
- if (hdl == INVALID_HANDLE_VALUE)
- {
- fSuccess = MoveFileExA( sFileName2.c_str(), sFileName1.c_str(), MOVEFILE_REPLACE_EXISTING );
- }
- else
- {
- FindClose(hdl);
- }
- }
-
- OutputDebugStringFormat( TEXT("%s <-> %s: %s"), sFileName1.c_str(), sFileName2.c_str(), fSuccess ? TEXT("OK") : TEXT("FAILED") );
-
- if (!fSuccess )
- {
- DWORD dwError = GetLastError();
- LPVOID lpMsgBuf;
- if ( FormatMessage(
- FORMAT_MESSAGE_ALLOCATE_BUFFER |
- FORMAT_MESSAGE_FROM_SYSTEM |
- FORMAT_MESSAGE_IGNORE_INSERTS,
- NULL,
- GetLastError(),
- MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
- (LPTSTR) &lpMsgBuf,
- 0,
- NULL ))
- {
- OutputDebugStringFormat( TEXT("Error Code %d: %s"), dwError, lpMsgBuf );
- LocalFree( lpMsgBuf );
- }
- else
- OutputDebugStringFormat( TEXT("Error Code %d: Unknown"), dwError );
- SetMsiErrorCode( dwError );
- }
-
- return fSuccess;
-}
-
-static std::_tstring strip( const std::_tstring& s, _TCHAR c )
-{
- std::_tstring result = s;
-
- std::_tstring::size_type f;
-
- do
- {
- f = result.find( c );
- if ( f != std::_tstring::npos )
- result.erase( f, 1 );
- } while ( f != std::_tstring::npos );
-
- return result;
-}
-
-static std::_tstring trim( const std::_tstring& rString )
-{
- std::_tstring temp = rString;
-
- while ( temp.length() && temp[0] == ' ' || temp[0] == '\t' )
- temp.erase( 0, 1 );
-
- std::_tstring::size_type len = temp.length();
-
- while ( len && temp[len-1] == ' ' || temp[len-1] == '\t' )
- {
- temp.erase( len - 1, 1 );
- len = temp.length();
- }
-
- return temp;
-}
-
-static bool readLine( FILE *fp, std::_tstring& rLine )
-{
- _TCHAR szBuffer[1024];
- bool bSuccess = false;
- bool bEOL = false;
- std::_tstring line;
-
-
- while ( !bEOL && _fgetts( szBuffer, sizeof(szBuffer), fp ) )
- {
- int len = _tcslen(szBuffer);
-
- bSuccess = true;
-
- while ( len && szBuffer[len - 1] == '\n' )
- {
- szBuffer[--len] = 0;
- bEOL = true;
- }
-
- line.append( szBuffer );
- }
-
- rLine = line;
- return bSuccess;
-}
-
-
-static std::_tstring getProfileString(
- const std::_tstring& aFileName,
- const std::_tstring& aSectionName,
- const std::_tstring& aKeyName,
- const std::_tstring& aDefault = _T("") )
-{
- FILE *fp = _tfopen( aFileName.c_str(), _T("r") );
- std::_tstring retValue = aDefault.length() ? aDefault : _T("");
-
- if ( fp )
- {
- std::_tstring line;
- std::_tstring section;
-
- while ( readLine( fp, line ) )
- {
- line = trim( line );
-
- if ( line.length() && line[0] == '[' )
- {
- line.erase( 0, 1 );
- std::_tstring::size_type end = line.find( ']', 0 );
-
- if ( std::_tstring::npos != end )
- section = trim( line.substr( 0, end ) );
- }
- else
- {
-
- std::_tstring::size_type iEqualSign = line.find( '=', 0 );
-
- if ( iEqualSign != std::_tstring::npos )
- {
- std::_tstring keyname = line.substr( 0, iEqualSign );
- keyname = trim( keyname );
-
- std::_tstring value = line.substr( iEqualSign + 1 /*, std::_tstring::npos */ );
- value = trim( value );
-
- if (
- 0 == _tcsicmp( section.c_str(), aSectionName.c_str() ) &&
- 0 == _tcsicmp( keyname.c_str(), aKeyName.c_str() )
- )
- {
- retValue = value;
- break;
- }
- }
- }
- }
-
- fclose( fp );
- }
-
- return retValue;
-}
-
-static std::queue< std::_tstring > getProfileSections( const std::_tstring& aFileName )
-{
- FILE *fp = _tfopen( aFileName.c_str(), _T("r") );
- std::queue< std::_tstring > aResult;
-
- OutputDebugStringFormat( TEXT("*** Retrieving Section Names ****") );
-
- if ( fp )
- {
- std::_tstring line;
- std::_tstring section;
-
- while ( readLine( fp, line ) )
- {
- line = trim( line );
-
- if ( line.length() && line[0] == '[' )
- {
- line.erase( 0, 1 );
- std::_tstring::size_type end = line.find( ']', 0 );
-
- if ( std::_tstring::npos != end )
- section = trim( line.substr( 0, end ) );
-
- aResult.push( section );
-
- OutputDebugStringFormat( TEXT("Section: %s"), section.c_str() );
-
- }
- }
-
- fclose( fp );
- }
-
- OutputDebugStringFormat( TEXT("*** Done Section Names ***") );
-
- return aResult;
-}
-
-static std::queue< std::_tstring > getProfileKeys( const std::_tstring& aFileName, const std::_tstring& aSectionName )
-{
- FILE *fp = _tfopen( aFileName.c_str(), _T("r") );
- std::queue< std::_tstring > aResult;
-
- OutputDebugStringFormat( TEXT("*** Retrieving Key Names for [%s] ***"), aSectionName.c_str() );
-
- if ( fp )
- {
- std::_tstring line;
- std::_tstring section;
-
- while ( readLine( fp, line ) )
- {
- line = trim( line );
-
- if ( line.length() && line[0] == '[' )
- {
- line.erase( 0, 1 );
- std::_tstring::size_type end = line.find( ']', 0 );
-
- if ( std::_tstring::npos != end )
- section = trim( line.substr( 0, end ) );
- }
- else
- {
-
- std::_tstring::size_type iEqualSign = line.find( '=', 0 );
-
- if ( iEqualSign != std::_tstring::npos )
- {
- std::_tstring keyname = line.substr( 0, iEqualSign );
- keyname = trim( keyname );
-
- if ( 0 == _tcsicmp( section.c_str(), aSectionName.c_str() ) )
- {
- aResult.push( keyname );
-
- OutputDebugStringFormat( keyname.c_str() );
-
- }
- }
- }
- }
-
- fclose( fp );
- }
-
- OutputDebugStringFormat( TEXT("*** Done Key Names for [%s] ***"), aSectionName.c_str() );
-
- return aResult;
-}
-
-extern "C" UINT __stdcall InstallPatchedFiles( MSIHANDLE handle )
-{
- std::_tstring sInstDir = GetMsiProperty( handle, TEXT("INSTALLLOCATION") );
- std::_tstring sProgramDir = sInstDir + TEXT("program\\");
- std::_tstring sPatchFile = sProgramDir + TEXT("patchlist.txt");
-
- std::queue< std::_tstring > aSectionNames;
- std::queue< std::_tstring > aKeyNames;
-
- OutputDebugStringA( "Starting Custom Action" );
-
- aSectionNames = getProfileSections( sPatchFile );
- while ( !aSectionNames.empty() )
- {
- std::_tstring sSectionName = aSectionNames.front();
- if ( std::_tstring(TEXT("_root")) == sSectionName ) { sSectionName = TEXT(""); }
-
- aKeyNames = getProfileKeys( sPatchFile, sSectionName );
- while ( !aKeyNames.empty() )
- {
- std::_tstring sKeyName = aKeyNames.front();
- std::_tstring sValue = getProfileString( sPatchFile, sSectionName, sKeyName );
-
- if ( sValue.length() )
- {
- std::_tstring sFileName1 = sKeyName;
- std::_tstring sExtension = sValue;
- std::_tstring sFileName2;
-
- sFileName1 = strip( sFileName1, '\"' );
- sExtension = strip( sExtension, '\"' );
-
- sFileName1 = sInstDir + sSectionName + sFileName1;
- sFileName2 = sFileName1 + sExtension;
-
- SwapFiles( sFileName1, sFileName2 );
- }
-
- aKeyNames.pop();
- }
-
- aSectionNames.pop();
- }
-
- return ERROR_SUCCESS;
-}
-
-extern "C" UINT __stdcall UninstallPatchedFiles( MSIHANDLE handle )
-{
- TCHAR szValue[8192];
- DWORD nValueSize = sizeof(szValue);
- HKEY hKey;
-
- std::_tstring sInstDir;
-
- std::_tstring sProductKey = GetMsiProperty( handle, TEXT("FINDPRODUCT") );
-
- if ( ERROR_SUCCESS == RegOpenKey( HKEY_CURRENT_USER, sProductKey.c_str(), &hKey ) )
- {
- if ( ERROR_SUCCESS == RegQueryValueEx( hKey, TEXT("INSTALLLOCATION"), NULL, NULL, (LPBYTE)szValue, &nValueSize ) )
- {
- sInstDir = szValue;
- }
- RegCloseKey( hKey );
- }
- else if ( ERROR_SUCCESS == RegOpenKey( HKEY_LOCAL_MACHINE, sProductKey.c_str(), &hKey ) )
- {
- if ( ERROR_SUCCESS == RegQueryValueEx( hKey, TEXT("INSTALLLOCATION"), NULL, NULL, (LPBYTE)szValue, &nValueSize ) )
- {
- sInstDir = szValue;
- }
- RegCloseKey( hKey );
- }
- else
- return ERROR_SUCCESS;
-
- std::_tstring sProgramDir = sInstDir + TEXT("program\\");
- std::_tstring sPatchFile = sProgramDir + TEXT("patchlist.txt");
-
- std::queue< std::_tstring > aSectionNames;
- std::queue< std::_tstring > aKeyNames;
-
- aSectionNames = getProfileSections( sPatchFile );
- while ( !aSectionNames.empty() )
- {
- std::_tstring sSectionName = aSectionNames.front();
- if ( std::_tstring(TEXT("_root")) == sSectionName ) { sSectionName = TEXT(""); }
-
- aKeyNames = getProfileKeys( sPatchFile, sSectionName );
- while( !aKeyNames.empty() )
- {
- std::_tstring sKeyName = aKeyNames.front();
- std::_tstring sValue = getProfileString( sPatchFile, sSectionName, sKeyName );
-
- if ( sValue.length() )
- {
- std::_tstring sFileName1 = sKeyName;
- std::_tstring sExtension = sValue;
- std::_tstring sFileName2;
-
- sFileName1 = strip( sFileName1, '\"' );
- sExtension = strip( sExtension, '\"' );
-
- sFileName1 = sInstDir + sSectionName + sFileName1;
- sFileName2 = sFileName1 + sExtension;
-
- SwapFiles( sFileName2, sFileName1 );
- }
-
- aKeyNames.pop();
- }
-
- aSectionNames.pop();
- }
-
- return ERROR_SUCCESS;
-}
-
-extern "C" UINT __stdcall SetFeatureState( MSIHANDLE handle )
-{
-
- // 1. Reading Product Code from setup.ini of installed Office
-
- std::_tstring sInstallPath = GetMsiProperty(handle, TEXT("INSTALLLOCATION"));
- std::_tstring sSetupiniPath = sInstallPath + TEXT("program\\setup.ini");
-
- TCHAR szProductCode[32767];
-
- GetPrivateProfileString(
- TEXT("Bootstrap"),
- TEXT("ProductCode"),
- TEXT("NOTFOUND"),
- szProductCode,
- SAL_N_ELEMENTS(szProductCode),
- sSetupiniPath.c_str()
- );
-
- if ( !_tcsicmp( szProductCode, TEXT("NOTFOUND") ) )
- {
- // No setup.ini or no "ProductCode" in setup.ini. This is an invalid directory.
- return ERROR_SUCCESS;
- }
-
- // 2. Converting Product code
-
- std::_tstring productCode = TEXT(szProductCode);
- productCode = ConvertGuid(std::_tstring(productCode.c_str() + 1, productCode.length() - 2));
-
- // 3. Setting path in the Windows registry to find installed features
-
- std::_tstring registryKey;
- HKEY registryRoot;
-
- if ( IsSetMsiProperty(handle, TEXT("ALLUSERS")) )
- {
- registryRoot = HKEY_LOCAL_MACHINE;
- registryKey = TEXT("Software\\Classes\\Installer\\Features\\") + productCode;
- }
- else
- {
- registryRoot = HKEY_CURRENT_USER;
- registryKey = TEXT("Software\\Microsoft\\Installer\\Features\\") + productCode;
- }
-
- // 4. Collecting all installed features from Windows registry
-
- HKEY hKey;
- if (RegOpenKey(registryRoot, registryKey.c_str(), &hKey) == ERROR_SUCCESS)
- {
- int counter = 0;
- LONG lEnumResult;
-
- do
- {
- TCHAR szValueName[8192];
- DWORD nValueNameSize = sizeof(szValueName);
- LPDWORD pValueNameSize = &nValueNameSize;
- TCHAR szValueData[8192];
- DWORD nValueDataSize = sizeof(szValueData);
-
- lEnumResult = RegEnumValue( hKey, counter, szValueName, pValueNameSize, NULL, NULL, (LPBYTE)szValueData, &nValueDataSize);
-
- if ( ERROR_SUCCESS == lEnumResult )
- {
- std::_tstring sValueName = szValueName;
-
- // Does this feature exist in this patch?
- if ( IsSetMsiProperty(handle, sValueName) )
- {
- // Feature is not installed, if szValueData starts with a "square" (ascii 6)
- if ( 6 == szValueData[0] )
- {
- MsiSetFeatureState(handle,sValueName.c_str(),INSTALLSTATE_ABSENT); // do not install this feature
- }
- else
- {
- MsiSetFeatureState(handle,sValueName.c_str(),INSTALLSTATE_LOCAL); // do install this feature
- }
- }
- }
-
- counter = counter + 1;
-
- } while ( ERROR_SUCCESS == lEnumResult );
-
- RegCloseKey( hKey );
- }
-
- return ERROR_SUCCESS;
-}
-
-extern "C" UINT __stdcall SetNewFeatureState( MSIHANDLE handle )
-{
- std::_tstring sValueName;
-
- sValueName = TEXT("gm_o_Onlineupdate");
-
- if (IsSetMsiProperty(handle, TEXT("SELECT_OU_FEATURE")))
- {
- MsiSetFeatureState(handle,sValueName.c_str(),INSTALLSTATE_LOCAL); // do install this feature
- }
- else
- {
- MsiSetFeatureState(handle,sValueName.c_str(),INSTALLSTATE_ABSENT); // do not install this feature
- }
-
- return ERROR_SUCCESS;
-}
-
-extern "C" UINT __stdcall ShowOnlineUpdateDialog( MSIHANDLE handle )
-{
- // Checking existence of file "updchk.uno.dll", which shows, that
- // Online Update functionality is always available. Then the dialog
- // that offers the Online Update is superfluous.
-
- std::_tstring sInstDir = GetMsiProperty( handle, TEXT("INSTALLLOCATION") );
- std::_tstring sProgramDir = sInstDir + TEXT("program\\");
- std::_tstring sSearchFile = sProgramDir + TEXT("updchk.uno.dll");
-
- WIN32_FIND_DATA data;
- HANDLE hdl = FindFirstFile(sSearchFile.c_str(), &data);
- if (hdl != INVALID_HANDLE_VALUE) // the file exists
- {
- // And finally setting property SHOW_ONLINEUPDATE_DIALOG
- // to hide this dialog
- UnsetMsiProperty(handle, TEXT("SHOW_ONLINEUPDATE_DIALOG"));
-
- // Setting SELECT_OU_FEATURE to 1, which is probably superfluous
- // because this is already the default value. But only this
- // guarantees, that CustomAction SetNewFeatureState always sets
- // the correct FeatureState for "gm_o_Onlineupdate", if it is
- // already installed.
- SetMsiProperty(handle, TEXT("SELECT_OU_FEATURE"));
- }
- else
- {
- // If the file does not exist, the Online Update dialog
- // has to be shown.
- SetMsiProperty(handle, TEXT("SHOW_ONLINEUPDATE_DIALOG"));
- FindClose(hdl);
- }
-
- return ERROR_SUCCESS;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/bin/modules/installer.pm b/solenv/bin/modules/installer.pm
index 76455f1c84ee..4df3bc759b42 100644
--- a/solenv/bin/modules/installer.pm
+++ b/solenv/bin/modules/installer.pm
@@ -298,7 +298,6 @@ sub run {
my $dirsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "Directory");
if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_hostname($dirsinproductarrayref); }
- if ( $installer::globals::patch ) { installer::scriptitems::use_patch_hostname($dirsinproductarrayref); }
if ( $allvariableshashref->{'SHIFT_BASIS_INTO_BRAND_LAYER'} ) { $dirsinproductarrayref = installer::scriptitems::shift_basis_directory_parents($dirsinproductarrayref); }
if ( $allvariableshashref->{'OFFICEDIRECTORYNAME'} ) { installer::scriptitems::set_officedirectory_name($dirsinproductarrayref, $allvariableshashref->{'OFFICEDIRECTORYNAME'}); }
@@ -329,11 +328,6 @@ sub run {
$filesinproductarrayref = installer::scriptitems::remove_Helppacklibraries_from_Installset($filesinproductarrayref);
}
- if (! $installer::globals::patch)
- {
- $filesinproductarrayref = installer::scriptitems::remove_patchonlyfiles_from_Installset($filesinproductarrayref);
- }
-
installer::logger::print_message( "... analyzing scpactions ... \n" );
my $scpactionsinproductarrayref = installer::setupscript::get_all_items_from_script($setupscriptref, "ScpAction");
@@ -341,7 +335,6 @@ sub run {
if ( $installer::globals::languagepack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); }
if ( $installer::globals::helppack ) { installer::scriptitems::use_langpack_copy_scpaction($scpactionsinproductarrayref); }
if ( $allvariableshashref->{'PRODUCTNAME'} eq "LibO-dev" ) { installer::scriptitems::use_devversion_copy_scpaction($scpactionsinproductarrayref); }
- if ( $installer::globals::patch ) { installer::scriptitems::use_patch_copy_scpaction($scpactionsinproductarrayref); }
installer::scriptitems::change_keys_of_scpactions($scpactionsinproductarrayref);
@@ -442,12 +435,6 @@ sub run {
installer::logger::print_message( "------------------------------------\n" );
installer::logger::print_message( "... languages $$languagestringref ... \n" );
- if ( $installer::globals::patch )
- {
- $installer::globals::addlicensefile = 0; # no license files for patches
- $installer::globals::makedownload = 0;
- }
-
if ( $installer::globals::languagepack )
{
$installer::globals::addsystemintegration = 0;
@@ -743,7 +730,7 @@ sub run {
my $profilesinproductlanguageresolvedarrayref;
my $profileitemsinproductlanguageresolvedarrayref;
- if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::product =~ /ada/i )) && (!($installer::globals::languagepack)) && (!($installer::globals::helppack)))
+ if ((!($installer::globals::is_copy_only_project)) && (!($installer::globals::languagepack)) && (!($installer::globals::helppack)))
{
installer::logger::print_message( "... creating profiles ...\n" );
@@ -757,6 +744,8 @@ sub run {
installer::scriptitems::replace_setup_variables($profileitemsinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref);
+ # Note that patch_user_dir is not related to the killed
+ # ancient (not MSP) "patch" thing, I think.
if ( $installer::globals::patch_user_dir )
{
installer::scriptitems::replace_userdir_variable($profileitemsinproductlanguageresolvedarrayref);
@@ -878,32 +867,6 @@ sub run {
}
- # Collecting all files without flag PATCH (for maintenance reasons)
- if ( $installer::globals::patch ) { installer::worker::collect_all_files_without_patch_flag($filesinproductlanguageresolvedarrayref); }
-
- # Patch projects can now start to select the required information
- if (( $installer::globals::patch ) && (( $installer::globals::issolarispkgbuild ) || ( $installer::globals::iswindowsbuild )))
- {
- $filesinproductlanguageresolvedarrayref = installer::worker::select_patch_items($filesinproductlanguageresolvedarrayref, "File");
- $scpactionsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($scpactionsinproductlanguageresolvedarrayref, "ScpAction");
- $linksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($linksinproductlanguageresolvedarrayref, "Shortcut");
- $unixlinksinproductlanguageresolvedarrayref = installer::worker::select_patch_items($unixlinksinproductlanguageresolvedarrayref, "Unixlink");
- $folderitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items($folderitemsinproductlanguageresolvedarrayref, "FolderItem");
- # @{$folderitemsinproductlanguageresolvedarrayref} = (); # no folderitems in languagepacks
-
- if ( $installer::globals::iswindowsbuild )
- {
- $registryitemsinproductlanguageresolvedarrayref = installer::worker::select_patch_items_without_name($registryitemsinproductlanguageresolvedarrayref, "RegistryItem");
-
- installer::worker::prepare_windows_patchfiles($filesinproductlanguageresolvedarrayref, $languagestringref, $allvariableshashref);
-
- # For Windows patches, the directories can now be collected again
- ($directoriesforepmarrayref, $alldirectoryhash) = installer::scriptitems::collect_directories_from_filesarray($filesinproductlanguageresolvedarrayref);
-
- @$directoriesforepmarrayref = sort { $a->{"HostName"} cmp $b->{"HostName"} } @$directoriesforepmarrayref;
- }
- }
-
#########################################################
# Collecting all scp actions
#########################################################
@@ -1012,8 +975,6 @@ sub run {
my $shellscriptsfilename = "";
if ( $onepackage->{'script'} ) { $shellscriptsfilename = $onepackage->{'script'}; }
- # no scripts for Solaris patches!
- if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { $shellscriptsfilename = ""; }
###########################
# package name
@@ -1101,22 +1062,6 @@ sub run {
next; # next package, end of loop !
}
- #################################################################
- # nothing to do for Linux patches, if no file has flag PATCH
- #################################################################
-
- # Linux Patch: The complete RPM has to be built, if one file in the RPM has the flag PATCH (also for DEBs)
- if (( $installer::globals::patch ) && (( $installer::globals::isrpmbuild ) || ( $installer::globals::isdebbuild )))
- {
- my $patchfiles = installer::worker::collect_all_items_with_special_flag($filesinpackage ,"PATCH");
- if ( ! ( $#{$patchfiles} > -1 ))
- {
- $infoline = "\n\nLinux Patch: No patch file in package: $packagename \-\> Skipping\n\n";
- push(@installer::globals::logfileinfo, $infoline);
- next;
- }
- }
-
###########################################
# Stripping libraries
###########################################
@@ -1152,18 +1097,6 @@ sub run {
my $epmheaderref = installer::epmfile::create_epm_header($allvariableshashref, $filesinproductlanguageresolvedarrayref, $languagesarrayref, $onepackage);
installer::epmfile::adding_header_to_epm_file(\@epmfile, $epmheaderref);
- if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ))
- {
- $filesinpackage = installer::worker::analyze_patch_files($filesinpackage);
-
- if ( ! ( $#{$filesinpackage} > -1 ))
- {
- $infoline = "\nNo file in package: $packagename \-\> Skipping\n";
- push(@installer::globals::logfileinfo, $infoline);
- next; # next package, end of loop !
- }
- }
-
# adding directories, files and links into epm file
installer::epmfile::put_directories_into_epmfile($dirsinpackage, \@epmfile, $allvariableshashref, $packagerootpath);
@@ -1292,10 +1225,6 @@ sub run {
# Creating installation set for Unix help packs, that are not part of multi lingual installation sets
if ( ( $installer::globals::helppack ) && ( ! $installer::globals::debian ) && ( ! $installer::globals::makedownload ) ) { installer::helppack::build_installer_for_helppack($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref, $languagesarrayref, $languagestringref); }
- # Finalizing patch installation sets
- if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild )) { installer::epmfile::finalize_patch($installer::globals::epmoutpath, $allvariableshashref); }
- if (( $installer::globals::patch ) && ( $installer::globals::isrpmbuild )) { installer::epmfile::finalize_linux_patch($installer::globals::epmoutpath, $allvariableshashref, $includepatharrayref); }
-
chdir($currentdir); # changing back into start directory
}
@@ -1731,7 +1660,6 @@ sub run {
my $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname");
if ( $installer::globals::languagepack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "langpackdownloadname"); }
if ( $installer::globals::helppack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "helppackdownloadname"); }
- if ( $installer::globals::patch ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "patchdownloadname"); }
if ( $$downloadname ne "" ) { $create_download = 1; }
if ( $installer::globals::iswindowsbuild )
diff --git a/solenv/bin/modules/installer/archivefiles.pm b/solenv/bin/modules/installer/archivefiles.pm
index bd26953f7c4a..11498f836de9 100644
--- a/solenv/bin/modules/installer/archivefiles.pm
+++ b/solenv/bin/modules/installer/archivefiles.pm
@@ -212,18 +212,6 @@ sub resolving_archive_flag
my $select_patch_files = 0;
my $patchlistfiles = "";
my @keptpatchflags = ();
- if (( $styles =~ /\bPATCH\b/ ) && ( $onefile->{'Patchfiles'} ) && ( $installer::globals::patch ))
- {
- $select_patch_files = 1; # special handling if a Patchlist is defined
- $patchlistfiles = get_patch_file_list( $onefile->{'Patchfiles'} );
- $infoline = "Patch file list defined at file: $onefile->{'Name'} :\n";
- push( @installer::globals::logfileinfo, $infoline);
- for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ )
- {
- $infoline = "\"${$patchlistfiles}[$k]\"\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
if ( $onefile->{'Patchfiles'} ) { $onefile->{'Patchfiles'} = ""; } # Patch file list no longer required
@@ -398,24 +386,6 @@ sub resolving_archive_flag
}
}
- if ( $select_patch_files )
- {
- # Is this file listed in the Patchfile list?
- # $zipname (filename including path in zip file has to be listed in patchfile list
-
- if ( ! grep {$_ eq $zipname} @{$patchlistfiles} )
- {
- $newfile{'Styles'} =~ s/\bPATCH\b//; # removing the flag PATCH
- $newfile{'Styles'} =~ s/\,\s*\,/\,/;
- $newfile{'Styles'} =~ s/\(\s*\,/\(/;
- $newfile{'Styles'} =~ s/\,\s*\)/\)/;
- }
- else
- {
- push( @keptpatchflags, $zipname); # collecting all PATCH flags
- }
- }
-
if ( $rename_to_language )
{
my $newzipname = put_language_into_name($zipname, $onelanguage);
@@ -484,43 +454,6 @@ sub resolving_archive_flag
}
- # Comparing the content of @keptpatchflags and $patchlistfiles
- # Do all files from the patch list have a PATCH flag ?
- # @keptpatchflags contains only files included in $patchlistfiles. But are all
- # files from $patchlistfiles included in @keptpatchflags?
-
- if ( $select_patch_files )
- {
- my $number = $#{$patchlistfiles} + 1;
- $infoline = "PATCHLIST: Number of files in patch list: $number\n";
- push( @installer::globals::logfileinfo, $infoline);
- $number = $#keptpatchflags + 1;
- $infoline = "PATCHLIST: Number of kept PATCH flags: $number\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $k = 0; $k <= $#keptpatchflags; $k++ )
- {
- $infoline = "KEPT PATCH FLAGS: $keptpatchflags[$k]\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- my @warningfiles = ();
-
- for ( my $k = 0; $k <= $#{$patchlistfiles}; $k++ )
- {
- if ( ! grep {$_ eq ${$patchlistfiles}[$k]} @keptpatchflags )
- {
- push(@warningfiles, ${$patchlistfiles}[$k]);
- }
- }
-
- for ( my $k = 0; $k <= $#warningfiles; $k++ )
- {
- $infoline = "WARNING: $warningfiles[$k] did not keep PATCH flag (does not exist in zip file)!\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
-
if ( $unziperror )
{
installer::logger::print_warning( "Repeating to unpack $sourcepath! \n" );
diff --git a/solenv/bin/modules/installer/control.pm b/solenv/bin/modules/installer/control.pm
index 3f88c472ec22..6baced7633c3 100644
--- a/solenv/bin/modules/installer/control.pm
+++ b/solenv/bin/modules/installer/control.pm
@@ -484,7 +484,6 @@ sub set_addsystemintegration
if ( $allvariables->{'ADDSYSTEMINTEGRATION'} ) { $installer::globals::addsystemintegration = 1; }
- if ( $installer::globals::patch ) { $installer::globals::addsystemintegration = 0; }
if ( $installer::globals::languagepack ) { $installer::globals::addsystemintegration = 0; }
if ( $installer::globals::helppack ) { $installer::globals::addsystemintegration = 0; }
if (( $installer::globals::packageformat eq "native" ) || ( $installer::globals::packageformat eq "portable" )) { $installer::globals::addsystemintegration = 0; }
diff --git a/solenv/bin/modules/installer/epmfile.pm b/solenv/bin/modules/installer/epmfile.pm
index fa66fd91db8e..58fe27d4bab0 100644
--- a/solenv/bin/modules/installer/epmfile.pm
+++ b/solenv/bin/modules/installer/epmfile.pm
@@ -487,16 +487,16 @@ sub create_epm_header
my $replaces = "";
- if (( $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::patch ))
+ if ( $installer::globals::issolarispkgbuild )
{
$replaces = "solarisreplaces"; # the name in the packagelist
}
- elsif (( $installer::globals::islinuxbuild ) && ( ! $installer::globals::patch ))
+ elsif ( $installer::globals::islinuxbuild )
{
$replaces = "linuxreplaces"; # the name in the packagelist
}
- if (( $replaces ) && ( ! $installer::globals::patch ))
+ if ( $replaces )
{
if ( $onepackage->{$replaces} )
{
@@ -549,13 +549,6 @@ sub create_epm_header
$provides = "freebsdprovides"; # the name in the packagelist
$requires = "freebsdrequires"; # the name in the packagelist
}
- elsif (( $installer::globals::isrpmbuild ) &&
- ( $installer::globals::patch ) &&
- ( exists($onepackage->{'linuxpatchrequires'}) ))
- {
- $provides = "provides"; # the name in the packagelist
- $requires = "linuxpatchrequires"; # the name in the packagelist
- }
else
{
$provides = "provides"; # the name in the packagelist
@@ -1008,124 +1001,6 @@ sub set_revision_in_pkginfo
}
########################################################
-# Setting Patch information for Respin versions
-# into pkginfo file. This prevents Respin versions
-# from patching.
-########################################################
-
-sub set_patchlist_in_pkginfo_for_respin
-{
- my ($changefile, $filename, $allvariables, $packagename) = @_;
-
- my $patchlistname = "SOLSPARCPATCHLISTFORRESPIN";
- if ( $installer::globals::issolarisx86build ) { $patchlistname = "SOLIAPATCHLISTFORRESPIN"; }
-
- if ( $allvariables->{$patchlistname} )
- {
- # patchlist separator is a blank
- my $allpatchesstring = $allvariables->{$patchlistname};
- my @usedpatches = ();
-
- # Analyzing the patchlist
- # Syntax: 120186-10 126411-01(+core-01) -> use 126411-01 only for core-01
- # Syntax: 120186-10 126411-01(-core-01) -> use 126411-01 for all packages except for core-01
- my $allpatches = installer::converter::convert_whitespace_stringlist_into_array(\$allpatchesstring);
-
- for ( my $i = 0; $i <= $#{$allpatches}; $i++ )
- {
- my $patchdefinition = ${$allpatches}[$i];
-
- my $patchid = "";
- my $symbol = "";
- my $constraint = "";
- my $isusedpatch = 0;
-
- if ( $patchdefinition =~ /^\s*(.+)\(([+-])(.+)\)\s*$/ )
- {
- $patchid = $1;
- $symbol = $2;
- $constraint = $3;
- }
- elsif (( $patchdefinition =~ /\(/ ) || ( $patchdefinition =~ /\)/ )) # small syntax check
- {
- # if there is a bracket in the $patchdefinition, but it does not
- # match the if-condition, this is an erroneous definition.
- installer::exiter::exit_program("ERROR: Unknown patch string: $patchdefinition", "set_patchlist_in_pkginfo_for_respin");
- }
- else
- {
- $patchid = $patchdefinition;
- $isusedpatch = 1; # patches without constraint are always included
- }
-
- if ( $symbol ne "" )
- {
- if ( $symbol eq "+" )
- {
- if ( $packagename =~ /^.*\Q$constraint\E\s*$/ ) { $isusedpatch = 1; }
- }
-
- if ( $symbol eq "-" )
- {
- if ( ! ( $packagename =~ /^.*\Q$constraint\E\s*$/ )) { $isusedpatch = 1; }
- }
- }
-
- if ( $isusedpatch ) { push(@usedpatches, $patchid); }
- }
-
- if ( $#usedpatches > -1 )
- {
- my $patchstring = installer::converter::convert_array_to_space_separated_string(\@usedpatches);
-
- my $newline = "PATCHLIST=" . $patchstring . "\n";
- add_one_line_into_file($changefile, $newline, $filename);
-
- # Adding patch info for each used patch in the patchlist
-
- for ( my $i = 0; $i <= $#usedpatches; $i++ )
- {
- my $patchid = $usedpatches[$i];
- my $key = "PATCH_INFO_" . $patchid;
- $key =~ s/\s*$//;
-
- if ( ! $allvariables->{$key} ) { installer::exiter::exit_program("ERROR: No Patch info available in zip list file for $key", "set_patchlist_in_pkginfo"); }
- my $value = set_timestamp_in_patchinfo($allvariables->{$key});
- $newline = $key . "=" . $value . "\n";
-
- add_one_line_into_file($changefile, $newline, $filename);
- }
- }
- }
-}
-
-########################################################
-# Solaris requires, that the time of patch installation
-# must not be empty.
-# Format: Mon Mar 24 11:20:56 PDT 2008
-# Log file: Tue Apr 29 23:26:19 2008 (04:31 min.)
-# Replace string: ${TIMESTAMP}
-########################################################
-
-sub set_timestamp_in_patchinfo
-{
- my ($value) = @_;
-
- my $currenttime = localtime();
-
- if ( $currenttime =~ /^\s*(.+?)(\d\d\d\d)\s*$/ )
- {
- my $start = $1;
- my $year = $2;
- $currenttime = $start . "CET " . $year;
- }
-
- $value =~ s/\$\{TIMESTAMP\}/$currenttime/;
-
- return $value;
-}
-
-########################################################
# Setting MAXINST=1000 into the pkginfo file.
########################################################
@@ -1662,126 +1537,6 @@ sub contains_extension_dir
}
############################################################
-# A Solaris patch contains 7 specific scripts
-############################################################
-
-sub add_scripts_into_prototypefile
-{
- my ($prototypefile, $prototypefilename, $languagestringref, $staticpath) = @_;
-
- # The files are stored in the directory $installer::globals::patchincludepath
- # The file names are available via @installer::globals::solarispatchscripts
-
- my $path = $installer::globals::patchincludepath;
- $path =~ s/\/\s*$//;
- $path = $path . $installer::globals::separator;
-
- my @newlines = ();
- my $is_extension_package = contains_extension_dir($prototypefile);
-
- if ( $is_extension_package )
- {
- for ( my $i = 0; $i <= $#installer::globals::solarispatchscriptsforextensions; $i++ )
- {
- my $sourcefilename = $path . $installer::globals::solarispatchscriptsforextensions[$i];
- my $destfile = $installer::globals::solarispatchscriptsforextensions[$i];
-
- # If the sourcepath has "_extension" in its name, this has to be removed
- $destfile =~ s/_extensions\s*$//; # hard coded renaming of script name
-
- # Creating unique directory name with $prototypefilename
- my $extensiondir = installer::systemactions::create_directories("extensionscripts", $languagestringref);
-
- if ( $prototypefilename =~ /\/(\S*?)\s*$/ ) { $prototypefilename = $1; }
- $prototypefilename =~ s/\./_/g;
- my $destdir = $extensiondir . $installer::globals::separator . $prototypefilename;
- if ( ! -d $destdir ) { installer::systemactions::create_directory($destdir); }
- my $destpath = $destdir . $installer::globals::separator . $destfile;
- if ( -f $destpath ) { unlink($destpath); }
-
- # Reading file
- my $scriptfile = installer::files::read_file($sourcefilename);
-
- # Replacing variables
- my $oldstring = "PRODUCTDIRECTORYNAME";
- replace_variables_in_shellscripts_for_patch($scriptfile, $destpath, $oldstring, $staticpath);
-
- # Saving file
- installer::files::save_file($destpath, $scriptfile);
-
- # Writing file destination into prototype file
- my $line = "i $destfile=" . $destpath . "\n";
- push(@newlines, $line);
- }
- }
- else
- {
- for ( my $i = 0; $i <= $#installer::globals::solarispatchscripts; $i++ )
- {
- my $line = "i $installer::globals::solarispatchscripts[$i]=" . $path . $installer::globals::solarispatchscripts[$i] . "\n";
- push(@newlines, $line);
- }
- }
-
- # Including the new lines after the last line starting with "i"
-
- for ( my $i = 0; $i <= $#{$prototypefile}; $i++ )
- {
- if ( ${$prototypefile}[$i] =~ /^\s*i\s+copyright/ )
- {
- splice(@{$prototypefile}, $i, 1); # ignoring old copyright text, using patch standard
- next;
- }
- if ( ${$prototypefile}[$i] =~ /^\s*i\s+/ ) { next; }
- splice(@{$prototypefile}, $i, 0, @newlines);
- last;
- }
-}
-
-############################################################
-# Adding patch infos in pkginfo file
-############################################################
-
-sub include_patchinfos_into_pkginfo
-{
- my ( $changefile, $filename, $variableshashref ) = @_;
-
- # SUNW_PATCHID=101998-10
- # SUNW_OBSOLETES=114999-01 113999-01
- # SUNW_PKGTYPE=usr
- # SUNW_PKGVERS=1.0
- # SUNW_REQUIRES=126411-01
-
- my $patchidname = "SOLSPARCPATCHID";
- if ( $installer::globals::issolarisx86build ) { $patchidname = "SOLIAPATCHID"; }
-
- if ( ! $variableshashref->{$patchidname} ) { installer::exiter::exit_program("ERROR: Variable $patchidname not defined in zip list file!", "include_patchinfos_into_pkginfo"); }
-
- my $newline = "SUNW_PATCHID=" . $variableshashref->{$patchidname} . "\n";
- add_one_line_into_file($changefile, $newline, $filename);
-
- my $patchobsoletesname = "SOLSPARCPATCHOBSOLETES";
- if ( $installer::globals::issolarisx86build ) { $patchobsoletesname = "SOLIAPATCHOBSOLETES"; }
-
- my $obsoletes = "";
- if ( $variableshashref->{$patchobsoletesname} ) { $obsoletes = $variableshashref->{$patchobsoletesname}; }
- $newline = "SUNW_OBSOLETES=" . $obsoletes . "\n";
- add_one_line_into_file($changefile, $newline, $filename);
-
- my $patchrequiresname = "SOLSPARCPATCHREQUIRES";
- if ( $installer::globals::issolarisx86build ) { $patchrequiresname = "SOLIAPATCHREQUIRES"; }
-
- if ( $variableshashref->{$patchrequiresname} )
- {
- my $requires = $variableshashref->{$patchrequiresname};
- $newline = "SUNW_REQUIRES=" . $requires . "\n";
- add_one_line_into_file($changefile, $newline, $filename);
- }
- $newline = "SUNW_PATCH_PROPERTIES=\n";
- add_one_line_into_file($changefile, $newline, $filename);
-}
-
-############################################################
# Setting the correct Solaris locales
############################################################
@@ -1848,53 +1603,6 @@ sub include_languageinfos_into_pkginfo
}
############################################################
-# Collecting all files included in patch in
-# @installer::globals::patchfilecollector
-############################################################
-
-sub collect_patch_files
-{
- my ($file, $packagename, $prefix) = @_;
-
- # $file is the spec file or the prototypefile
-
- $prefix = $prefix . "/";
- my $packagenamestring = "Package " . $packagename . " \:\n";
- push(@installer::globals::patchfilecollector, $packagenamestring);
-
- for ( my $i = 0; $i <= $#{$file}; $i++ )
- {
- my $line = ${$file}[$i];
-
- if ( $installer::globals::isrpmbuild )
- {
- # %attr(0444,root,root) "/opt/openofficeorg20/program/about.bmp"
-
- if ( $line =~ /^\s*\%attr\(.*\)\s*\"(.*?)\"\s*$/ )
- {
- my $filename = $1 . "\n";
- $filename =~ s/^\s*\Q$prefix\E//;
- push(@installer::globals::patchfilecollector, $filename);
- }
- }
-
- if ( $installer::globals::issolarispkgbuild )
- {
- # f none program/msomrl.rdb=/ab/SRC680/unxsols4.pro/bin/msomrl.rdb 0444 root bin
-
- if ( $line =~ /^\s*f\s+\w+\s+(.*?)\=/ )
- {
- my $filename = $1 . "\n";
- push(@installer::globals::patchfilecollector, $filename);
- }
- }
- }
-
- push(@installer::globals::patchfilecollector, "\n");
-
-}
-
-############################################################
# Including package names into the depend files.
# The package names have to be included into
# packagelist. They are already saved in
@@ -1983,7 +1691,6 @@ sub prepare_packages
set_license_in_specfile($changefile, $variableshashref);
set_tab_into_datafile($changefile, $filesref);
installer::files::save_file($completefilename, $changefile);
- if ( $installer::globals::patch ) { collect_patch_files($changefile, $packagename, $localrelocatablepath); }
}
# removing the relocatable path in prototype file
@@ -1994,8 +1701,6 @@ sub prepare_packages
set_maxinst_in_pkginfo($changefile, $filename);
set_solaris_parameter_in_pkginfo($changefile, $filename, $variableshashref);
if ( $installer::globals::issolarisx86build ) { fix_architecture_setting($changefile); }
- if ( ! $installer::globals::patch ) { set_patchlist_in_pkginfo_for_respin($changefile, $filename, $variableshashref, $packagename); }
- if ( $installer::globals::patch ) { include_patchinfos_into_pkginfo($changefile, $filename, $variableshashref); }
if (( $onepackage->{'language'} ) && ( $onepackage->{'language'} ne "" ) && ( $onepackage->{'language'} ne "en-US" )) { include_languageinfos_into_pkginfo($changefile, $filename, $languagestringref, $onepackage, $variableshashref); }
installer::files::save_file($completefilename, $changefile);
@@ -2012,10 +1717,7 @@ sub prepare_packages
installer::files::save_file($completefilename, $changefile);
}
- if ( $installer::globals::patch ) { add_scripts_into_prototypefile($prototypefile, $prototypefilename, $languagestringref, $staticpath); }
-
installer::files::save_file($prototypefilename, $prototypefile);
- if ( $installer::globals::patch ) { collect_patch_files($prototypefile, $packagename, ""); }
# Adding package names into depend files for Solaris (not supported by epm)
my $dependfilename = $packagename . ".depend";
@@ -2817,170 +2519,6 @@ sub analyze_rootpath
}
-######################################################
-# Replacing one variable in patchinfo file
-######################################################
-
-sub replace_one_variable_in_file
-{
- my ( $file, $placeholder, $value ) = @_;
-
- for ( my $i = 0; $i <= $#{$file}; $i++ )
- {
- ${$file}[$i] =~ s/$placeholder/$value/g;
- }
-}
-
-######################################################
-# Setting variables in the patchinfo file
-######################################################
-
-sub set_patchinfo
-{
- my ( $patchinfofile, $patchid, $allvariables ) = @_;
-
- # Setting: PATCHIDPLACEHOLDER and ARCHITECTUREPLACEHOLDER and PATCHCORRECTSPLACEHOLDER
-
- replace_one_variable_in_file($patchinfofile, "PATCHIDPLACEHOLDER", $patchid);
-
- my $architecture = "";
- if ( $installer::globals::issolarissparcbuild ) { $architecture = "sparc"; }
- if ( $installer::globals::issolarisx86build ) { $architecture = "i386"; }
-
- replace_one_variable_in_file($patchinfofile, "ARCHITECTUREPLACEHOLDER", $architecture);
-
- if ( ! $allvariables->{'SOLARISPATCHCORRECTS'} ) { installer::exiter::exit_program("ERROR: No setting for PATCH_CORRECTS in zip list file!", "set_patchinfo"); }
- my $patchcorrects = $allvariables->{'SOLARISPATCHCORRECTS'};
-
- replace_one_variable_in_file($patchinfofile, "PATCHCORRECTSPLACEHOLDER", $patchcorrects);
-
- # Setting also PATCH_REQUIRES in patch info file, if entry in zip list file exists
- my $requiresstring = "";
- if ( $installer::globals::issolarissparcbuild ) { $requiresstring = "SOLSPARCPATCHREQUIRES"; }
- if ( $installer::globals::issolarisx86build ) { $requiresstring = "SOLIAPATCHREQUIRES"; }
-
- if ( $allvariables->{$requiresstring} )
- {
- my $newline = "PATCH_REQUIRES=\"" . $allvariables->{$requiresstring} . "\"" . "\n";
- push(@{$patchinfofile}, $newline);
- }
-}
-
-######################################################
-# Finalizing patch: Renaming directory and
-# including additional patch files.
-######################################################
-
-sub finalize_patch
-{
- my ( $newepmdir, $allvariables ) = @_;
-
- my $patchidname = "SOLSPARCPATCHID";
- if ( $installer::globals::issolarisx86build ) { $patchidname = "SOLIAPATCHID"; }
-
- if ( ! $allvariables->{$patchidname} ) { installer::exiter::exit_program("ERROR: Variable $patchidname not defined in zip list file!", "finalize_patch"); }
- my $patchid = $allvariables->{$patchidname};
- installer::systemactions::rename_directory($newepmdir, $patchid);
-
- # Copying all typical patch files into the patch directory
- # All patch file names are stored in @installer::globals::solarispatchfiles
- # Location of the file is $installer::globals::patchincludepath
-
- my $sourcepath = $installer::globals::patchincludepath;
- $sourcepath =~ s/\/\s*$//;
-
- for ( my $i = 0; $i <= $#installer::globals::solarispatchfiles; $i++ )
- {
- my $sourcefile = $sourcepath . $installer::globals::separator . $installer::globals::solarispatchfiles[$i];
- my $destfile = $patchid . $installer::globals::separator . $installer::globals::solarispatchfiles[$i];
- installer::systemactions::copy_one_file($sourcefile, $destfile);
- }
-
- # And editing the patchinfo file
-
- my $patchinfofilename = $patchid . $installer::globals::separator . "patchinfo";
- my $patchinfofile = installer::files::read_file($patchinfofilename);
- set_patchinfo($patchinfofile, $patchid, $allvariables);
- installer::files::save_file($patchinfofilename, $patchinfofile);
-}
-
-######################################################
-# Finalizing Linux patch: Renaming directory and
-# including additional patch files.
-######################################################
-
-sub finalize_linux_patch
-{
- my ( $newepmdir, $allvariables, $includepatharrayref ) = @_;
-
- # Copying the setup into the patch directory
- # and including the list of RPMs into it
-
- print "... creating patch setup ...\n";
-
- installer::logger::include_header_into_logfile("Creating Linux patch setup:");
-
- # find and read setup script template
-
- my $scriptfilename = "linuxpatchscript.sh";
- my $scriptref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$scriptfilename, $includepatharrayref, 0);
- if ($$scriptref eq "") { installer::exiter::exit_program("ERROR: Could not find patch script template $scriptfilename!", "finalize_linux_patch"); }
- my $scriptfile = installer::files::read_file($$scriptref);
-
- my $infoline = "Found script file $scriptfilename: $$scriptref \n";
- push( @installer::globals::logfileinfo, $infoline);
-
- # Collecting all RPMs in the patch directory
-
- my $fileextension = "rpm";
- my $rpmfiles = installer::systemactions::find_file_with_file_extension($fileextension, $newepmdir);
- if ( ! ( $#{$rpmfiles} > -1 )) { installer::exiter::exit_program("ERROR: Could not find rpm in directory $newepmdir!", "finalize_linux_patch"); }
- for ( my $i = 0; $i <= $#{$rpmfiles}; $i++ ) { installer::pathanalyzer::make_absolute_filename_to_relative_filename(\${$rpmfiles}[$i]); }
-
- # Searching packagename containing -core01
- my $found_package = 0;
- my $searchpackagename = "";
- for ( my $i = 0; $i <= $#{$rpmfiles}; $i++ )
- {
- if ( ${$rpmfiles}[$i] =~ /-core01-/ )
- {
- $searchpackagename = ${$rpmfiles}[$i];
- $found_package = 1;
- if ( $searchpackagename =~ /^\s*(.*?-core01)-.*/ ) { $searchpackagename = $1; }
- last;
- }
- }
-
- if ( ! $found_package ) { installer::exiter::exit_program("ERROR: No package containing \"-core01\" found in directory \"$newepmdir\"", "finalize_linux_patch"); }
-
- # Replacing the searchpackagename
- for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/SEARCHPACKAGENAMEPLACEHOLDER/$searchpackagename/; }
-
- # Setting the PRODUCTDIRECTORYNAME to $installer::globals::officedirhostname
- for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/PRODUCTDIRECTORYNAME/$installer::globals::officedirhostname/; }
-
- # Replacing the productname
- my $productname = $allvariables->{'PRODUCTNAME'};
- $productname = lc($productname);
- $productname =~ s/ /_/g; # abc office -> abc_office
-
- $infoline = "Adding productname $productname into Linux patch script\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#{$scriptfile}; $j++ ) { ${$scriptfile}[$j] =~ s/PRODUCTNAMEPLACEHOLDER/$productname/; }
-
- # Saving the file
-
- my $newscriptfilename = "setup";
- installer::files::save_file($newscriptfilename, $scriptfile);
-
- $infoline = "Saved Linux patch setup $newscriptfilename \n";
- push( @installer::globals::logfileinfo, $infoline);
-
- # Setting unix rights 755
- chmod 0755, $newscriptfilename;
-}
-
################################################
# Defining the English license text to add
# it into Solaris packages.
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 23ac86e304ee..45aa11bab4b7 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -192,12 +192,9 @@ BEGIN
$patch_user_dir = 0;
$languagepack = 0;
$helppack = 0;
- $patch = 0;
- $patchincludepath = "";
$refresh_includepaths = 0;
$include_paths_read = 0;
@patchfilecollector = ();
- $nopatchfilecollector = "";
@userregistrycollector = ();
$addeduserregitrykeys = 0;
$desktoplinkexists = 0;
@@ -256,9 +253,6 @@ BEGIN
$postprocess_standardepm = 0;
$mergemodules_analyzed = 0;
- @solarispatchscripts = ("checkinstall", "copyright", "patch_checkinstall", "patch_postinstall", "postinstall", "preinstall", "i.none");
- @solarispatchscriptsforextensions = ("checkinstall", "copyright", "patch_checkinstall", "patch_postinstall_extensions", "postinstall_extensions", "preinstall", "i.none");
- @solarispatchfiles = (".diPatch", "patchinfo");
@packagelistitems = ("module", "solarispackagename", "packagename", "copyright", "vendor", "description" );
@languagepackfeature =();
@helppackfeature =();
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index 609f7b41d819..2aa0a2806271 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -66,8 +66,6 @@ The following parameter are needed:
-copyproject : is set for projects that are only used for copying (optional)
-languagepack : do create a languagepack, no product pack (optional)
-helppack : do create a helppack, no product pack (optional)
--patch : do create a patch (optional)
--patchinc: Source for the patch include files (Solaris only)
-strip: Stripping files (Unix only)
-log : Logging all available information (optional)
@@ -137,12 +135,10 @@ sub getparameter
elsif ($param eq "-dontcallepm") { $installer::globals::call_epm = 0; }
elsif ($param eq "-msitemplate") { $installer::globals::idttemplatepath = shift(@ARGV); }
elsif ($param eq "-msilanguage") { $installer::globals::idtlanguagepath = shift(@ARGV); }
- elsif ($param eq "-patchinc") { $installer::globals::patchincludepath = shift(@ARGV); }
elsif ($param eq "-buildid") { $installer::globals::buildid = shift(@ARGV); }
elsif ($param eq "-copyproject") { $installer::globals::is_copy_only_project = 1; }
elsif ($param eq "-languagepack") { $installer::globals::languagepack = 1; }
elsif ($param eq "-helppack") { $installer::globals::helppack = 1;}
- elsif ($param eq "-patch") { $installer::globals::patch = 1; }
elsif ($param eq "-debian") { $installer::globals::debian = 1; }
elsif ($param eq "-strip") { $installer::globals::strip = 1; }
elsif ($param eq "-destdir") # new parameter for simple installer
@@ -477,31 +473,6 @@ sub control_required_parameter
}
#######################################
- # Patch currently only available
- # for Solaris packages and Linux
- #######################################
-
- if (( $installer::globals::patch ) && ( ! $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::isrpmbuild ) && ( ! $installer::globals::isdebbuild ) && ( ! $installer::globals::iswindowsbuild ) && ( ! $installer::globals::ismacdmgbuild ))
- {
- installer::logger::print_error( "Sorry, Patch flag currently only available for Solaris pkg, Linux RPM and Windows builds!" );
- usage();
- exit(-1);
- }
-
- if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( ! $installer::globals::patchincludepath ))
- {
- installer::logger::print_error( "Solaris patch requires parameter -patchinc !" );
- usage();
- exit(-1);
- }
-
- if (( $installer::globals::patch ) && ( $installer::globals::issolarispkgbuild ) && ( $installer::globals::patchincludepath ))
- {
- make_path_absolute(\$installer::globals::patchincludepath);
- $installer::globals::patchincludepath = installer::converter::make_path_conform($installer::globals::patchincludepath);
- }
-
- #######################################
# Testing existence of files
# also for copy-only projects
#######################################
@@ -560,7 +531,6 @@ sub outputparameter
if ((!($installer::globals::idtlanguagepath eq "")) && (!($installer::globals::iswindowsbuild))) { push(@output, "msi language path will be ignored for non Windows builds!\n"); }
if ((!($installer::globals::iswindowsbuild)) && ( $installer::globals::call_epm )) { push(@output, "Calling epm\n"); }
if ((!($installer::globals::iswindowsbuild)) && (!($installer::globals::call_epm))) { push(@output, "Not calling epm\n"); }
- if ( $installer::globals::patchincludepath ) { push(@output, "Patch include path: $installer::globals::patchincludepath\n"); }
if ( $installer::globals::strip ) { push(@output, "Stripping files\n"); }
else { push(@output, "No file stripping\n"); }
if ( $installer::globals::debian ) { push(@output, "Linux: Creating Debian packages\n"); }
@@ -578,7 +548,6 @@ sub outputparameter
if ( $installer::globals::is_copy_only_project ) { push(@output, "This is a copy only project!\n"); }
if ( $installer::globals::languagepack ) { push(@output, "Creating language pack!\n"); }
if ( $installer::globals::helppack ) { push(@output, "Creating help pack!\n"); }
- if ( $installer::globals::patch ) { push(@output, "Creating patch!\n"); }
push(@output, "########################################################\n");
# output into shell and into logfile
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index 3f32f9488622..77fa1d3619b9 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -516,21 +516,6 @@ sub use_langpack_hostname
# Using different HostName for language packs
################################################################################
-sub use_patch_hostname
-{
- my ($dirsref) = @_;
-
- for ( my $i = 0; $i <= $#{$dirsref}; $i++ )
- {
- my $onedir = ${$dirsref}[$i];
- if (( $onedir->{'PatchHostName'} ) && ( $onedir->{'PatchHostName'} ne "" )) { $onedir->{'HostName'} = $onedir->{'PatchHostName'}; }
- }
-}
-
-################################################################################
-# Using different HostName for language packs
-################################################################################
-
sub use_langpack_copy_scpaction
{
my ($scpactionsref) = @_;
@@ -558,21 +543,6 @@ sub use_devversion_copy_scpaction
}
################################################################################
-# Using different HostName for language packs
-################################################################################
-
-sub use_patch_copy_scpaction
-{
- my ($scpactionsref) = @_;
-
- for ( my $i = 0; $i <= $#{$scpactionsref}; $i++ )
- {
- my $onescpaction = ${$scpactionsref}[$i];
- if (( $onescpaction->{'PatchCopy'} ) && ( $onescpaction->{'PatchCopy'} ne "" )) { $onescpaction->{'Copy'} = $onescpaction->{'PatchCopy'}; }
- }
-}
-
-################################################################################
# Shifting parent directories of URE and Basis layer, so that
# these directories are located below the Brand layer.
# Style: SHIFT_BASIS_INTO_BRAND_LAYER
@@ -728,7 +698,6 @@ sub replace_setup_variables
$value =~ s/\<alllanguages\>/$languagesstring/;
$value =~ s/\<productmajor\>/$localbuild/;
$value =~ s/\<productminor\>/$localminor/;
- $value =~ s/\<productbuildid\>/$installer::globals::buildid/;
$value =~ s/\<sourceid\>/$installer::globals::build/;
$value =~ s/\<updateid\>/$updateid/;
$value =~ s/\<pkgformat\>/$installer::globals::packageformat/;
@@ -1616,42 +1585,6 @@ sub remove_Helppacklibraries_from_Installset
}
############################################################################
-# Removing all files with flag PATCH_ONLY from installation set.
-# This function is not called during patch creation.
-############################################################################
-
-sub remove_patchonlyfiles_from_Installset
-{
- my ($itemsarrayref) = @_;
-
- my $infoline;
-
- my @newitemsarray = ();
-
- for ( my $i = 0; $i <= $#{$itemsarrayref}; $i++ )
- {
- my $oneitem = ${$itemsarrayref}[$i];
- my $styles = "";
- if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; }
-
- if ( $styles =~ /\bPATCH_ONLY\b/ )
- {
- $infoline = "Removing file with flag PATCH_ONLY $oneitem->{'gid'} from the installation set.\n";
- push( @installer::globals::globallogfileinfo, $infoline);
-
- next;
- }
-
- push(@newitemsarray, $oneitem);
- }
-
- $infoline = "\n";
- push( @installer::globals::globallogfileinfo, $infoline);
-
- return \@newitemsarray;
-}
-
-############################################################################
# Some files cotain a $ in their name. epm conflicts with such files.
# Solution: Renaming this files, converting "$" to "$$"
############################################################################
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index 5bc319d4222b..c9ce580c5b9c 100755
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -301,7 +301,7 @@ sub create_package
my $localtempdir = $tempdir;
- if (( $installer::globals::languagepack ) || ( $installer::globals::helppack ) || ( $installer::globals::patch ))
+ if (( $installer::globals::languagepack ) || ( $installer::globals::helppack ))
{
$localtempdir = "$tempdir/$packagename";
if ( $installer::globals::helppack ) { $volume_name = "$volume_name Help Pack"; }
@@ -311,12 +311,6 @@ sub create_package
$volume_name_classic = "$volume_name_classic Language Pack";
$volume_name_classic_app = "$volume_name_classic_app Language Pack";
}
- if ( $installer::globals::patch )
- {
- $volume_name = "$volume_name Patch";
- $volume_name_classic = "$volume_name_classic Patch";
- $volume_name_classic_app = "$volume_name_classic_app Patch";
- }
# Create tar ball named tarball.tar.bz2
# my $appfolder = $localtempdir . "/" . $volume_name . "\.app";
@@ -362,7 +356,6 @@ sub create_package
my $scriptfilename = "";
if ( $installer::globals::languagepack ) { $scriptfilename = "osx_install_languagepack.applescript"; }
if ( $installer::globals::helppack ) { $scriptfilename = "osx_install_helppack.applescript"; }
- if ( $installer::globals::patch ) { $scriptfilename = "osx_install_patch.applescript"; }
my $scripthelpersolverfilename = "mac_install.script";
# my $scripthelperrealfilename = $volume_name;
my $scripthelperrealfilename = $volume_name_classic_app;
@@ -508,7 +501,6 @@ sub create_simple_package
$downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "downloadname");
if ( $installer::globals::languagepack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "langpackdownloadname"); }
if ( $installer::globals::helppack ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "helppackdownloadname"); }
- if ( $installer::globals::patch ) { $downloadname = installer::ziplist::getinfofromziplist($allsettingsarrayref, "patchdownloadname"); }
$packagename = installer::download::resolve_variables_in_downloadname($allvariables, $$downloadname, \$locallanguage);
}
}
@@ -574,8 +566,6 @@ sub create_simple_package
my $onefile = ${$filesref}[$i];
if (( $onefile->{'Styles'} ) && ( $onefile->{'Styles'} =~ /\bBINARYTABLE_ONLY\b/ )) { next; }
- if (( $installer::globals::patch ) && ( $onefile->{'Styles'} ) && ( ! ( $onefile->{'Styles'} =~ /\bPATCH\b/ ))) { next; }
- if (( $installer::globals::patch ) && ( $installer::globals::packageformat eq "dmg" )) { push(@installer::globals::patchfilecollector, "$onefile->{'destination'}\n"); }
my $source = $onefile->{'sourcepath'};
my $destination = $onefile->{'destination'};
@@ -627,8 +617,6 @@ sub create_simple_package
{
my $onelink = ${$linksref}[$i];
- if (( $installer::globals::patch ) && ( $onelink->{'Styles'} ) && ( ! ( $onelink->{'Styles'} =~ /\bPATCH\b/ ))) { next; }
-
my $destination = $onelink->{'destination'};
$destination = $subfolderdir . $installer::globals::separator . $destination;
my $destinationfile = $onelink->{'destinationfile'};
@@ -644,8 +632,6 @@ sub create_simple_package
{
my $onelink = ${$unixlinksref}[$i];
- if (( $installer::globals::patch ) && ( $onelink->{'Styles'} ) && ( ! ( $onelink->{'Styles'} =~ /\bPATCH\b/ ))) { next; }
-
my $target = $onelink->{'Target'};
my $destination = $subfolderdir . $installer::globals::separator . $onelink->{'destination'};
diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm
index 22d83fb6058b..e2c11ff6ba94 100644
--- a/solenv/bin/modules/installer/systemactions.pm
+++ b/solenv/bin/modules/installer/systemactions.pm
@@ -230,7 +230,6 @@ sub create_directories
if ( $installer::globals::languagepack ) { $path = $path . $localproductname . "_languagepack" . $installer::globals::separator; }
elsif ( $installer::globals::helppack ) { $path = $path . $localproductname . "_helppack" . $installer::globals::separator; }
- elsif ( $installer::globals::patch ) { $path = $path . $localproductname . "_patch" . $installer::globals::separator; }
else { $path = $path . $localproductname . $installer::globals::separator; }
create_directory($path);
diff --git a/solenv/bin/modules/installer/windows/createfolder.pm b/solenv/bin/modules/installer/windows/createfolder.pm
index 5f42ee71c74a..d43961bb0360 100644
--- a/solenv/bin/modules/installer/windows/createfolder.pm
+++ b/solenv/bin/modules/installer/windows/createfolder.pm
@@ -88,10 +88,8 @@ sub get_createfolder_component
# containing the file $allvariableshashref->{'GLOBALFILEGID'}
if ( ! $allvariableshashref->{'GLOBALFILEGID'} ) { installer::exiter::exit_program("ERROR: GLOBALFILEGID must be defined in list file!", "get_createfolder_component"); }
- if (( $installer::globals::patch ) && ( ! $allvariableshashref->{'GLOBALFILEGID'} )) { installer::exiter::exit_program("ERROR: GLOBALPATCHFILEGID must be defined in list file!", "get_createfolder_component"); }
my $globalfilegid = $allvariableshashref->{'GLOBALFILEGID'};
- if ( $installer::globals::patch ) { $globalfilegid = $allvariableshashref->{'GLOBALPATCHFILEGID'}; }
my $onefile;
if ( $installer::globals::languagepack ) { $onefile = get_languagepack_file($filesref, $onedir); }
diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm
index 92cb9209393d..97b9937611bb 100644
--- a/solenv/bin/modules/installer/windows/directory.pm
+++ b/solenv/bin/modules/installer/windows/directory.pm
@@ -253,8 +253,7 @@ sub check_sourcedir_addon
{
my ( $onedir, $allvariableshashref ) = @_;
- if (($installer::globals::patch) ||
- ($installer::globals::languagepack) ||
+ if (($installer::globals::languagepack) ||
($installer::globals::helppack) ||
($allvariableshashref->{'CHANGETARGETDIR'}))
{
@@ -407,7 +406,7 @@ sub add_root_directories
my $oneline = "";
- if (( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ) && ( ! $allvariableshashref->{'DONTUSESTARTMENUFOLDER'} ))
+ if (( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ) && ( ! $allvariableshashref->{'DONTUSESTARTMENUFOLDER'} ))
{
my $productname;
diff --git a/solenv/bin/modules/installer/windows/feature.pm b/solenv/bin/modules/installer/windows/feature.pm
index c22b8646523b..d8ead0336ec3 100644
--- a/solenv/bin/modules/installer/windows/feature.pm
+++ b/solenv/bin/modules/installer/windows/feature.pm
@@ -141,7 +141,6 @@ sub get_feature_level
if ( $localdefault eq "NO" ) # explicitly set Default = "NO"
{
$level = "200"; # deselected in default installation, base is 100
- if ( $installer::globals::patch ) { $level = "20"; }
}
# special handling for Java and Ada
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index b29004e4fb55..de80cef62016 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -760,23 +760,6 @@ sub prepare_language_idt_directory
{
installer::systemactions::create_directory($destinationdir . $installer::globals::separator . "Binary");
installer::systemactions::copy_directory($installer::globals::idttemplatepath . $installer::globals::separator . "Binary", $destinationdir . $installer::globals::separator . "Binary");
-
- if ((( $installer::globals::patch ) && ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} )) || ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} ))
- {
- my $bitmapdir = "";
- if ( $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSPATCHBITMAPDIRECTORY'}; }
- if ( $allvariables->{'WINDOWSBITMAPDIRECTORY'} ) { $bitmapdir = $allvariables->{'WINDOWSBITMAPDIRECTORY'}; }
-
- my $newsourcedir = $installer::globals::unpackpath . $installer::globals::separator . $bitmapdir; # path setting in list file dependent from unpackpath !?
- $infoline = "\nOverwriting files in directory \"" . $destinationdir . $installer::globals::separator . "Binary" . "\" with files from directory \"" . $newsourcedir . "\".\n";
- push( @installer::globals::logfileinfo, $infoline);
- if ( ! -d $newsourcedir )
- {
- my $currentdir = cwd();
- installer::exiter::exit_program("ERROR: Directory $newsourcedir does not exist! Current directory is: $currentdir", "prepare_language_idt_directory");
- }
- installer::systemactions::copy_directory($newsourcedir, $destinationdir . $installer::globals::separator . "Binary");
- }
}
installer::systemactions::create_directory($destinationdir . $installer::globals::separator . "Icon");
@@ -1714,18 +1697,6 @@ sub addcustomactions
if ( $customaction->{$key} )
{
$value = $customaction->{$key};
-
- # in a patch the Assignment can be overwritten by a PatchAssignment
- if ( $installer::globals::patch )
- {
- $patchkey = "PatchAssignment" . $j;
- if ( $customaction->{$patchkey} )
- {
- $value = $customaction->{$patchkey};
- $key = $patchkey;
- }
- }
-
}
else { last; }
diff --git a/solenv/bin/modules/installer/windows/inifile.pm b/solenv/bin/modules/installer/windows/inifile.pm
index d13fafc26fd6..1b4fd5c64efe 100644
--- a/solenv/bin/modules/installer/windows/inifile.pm
+++ b/solenv/bin/modules/installer/windows/inifile.pm
@@ -49,23 +49,6 @@ sub get_profile_for_profileitem
}
####################################################
-# Checking whether profile is included in patch
-####################################################
-
-sub profile_has_patch_flag
-{
- my ($profile) = @_;
-
- my $in_patch = 0;
-
- my $styles = "";
- if ( $profile->{'Styles'} ) { $styles = $profile->{'Styles'}; }
- if ( $styles =~ /\bPATCH\b/ ) { $in_patch = 1; }
-
- return $in_patch;
-}
-
-####################################################
# Checking whether profile is part of product
####################################################
@@ -117,8 +100,6 @@ sub create_inifile_table
my $profile = get_profile_for_profileitem($profileid, $filesref);
- if (( $installer::globals::patch ) && ( ! profile_has_patch_flag($profile) )) { next; }
-
my %inifile = ();
$inifile{'IniFile'} = $profileitem->{'Inifiletablekey'};
diff --git a/solenv/bin/modules/installer/windows/mergemodule.pm b/solenv/bin/modules/installer/windows/mergemodule.pm
index f4e5951150cd..40ad40474bf3 100755
--- a/solenv/bin/modules/installer/windows/mergemodule.pm
+++ b/solenv/bin/modules/installer/windows/mergemodule.pm
@@ -51,7 +51,7 @@ sub merge_mergemodules_into_msi_database
my ($mergemodules, $filesref, $msifilename, $languagestringref, $allvariables, $includepatharrayref, $allupdatesequences, $allupdatelastsequences, $allupdatediskids) = @_;
my $domerge = 0;
- if (( $#{$mergemodules} > -1 ) && ( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) { $domerge = 1; }
+ if (( $#{$mergemodules} > -1 ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack )) { $domerge = 1; }
if ( $domerge )
{
diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm
index 0a898edfc34c..6087d1dfb428 100644
--- a/solenv/bin/modules/installer/windows/msiglobal.pm
+++ b/solenv/bin/modules/installer/windows/msiglobal.pm
@@ -1369,19 +1369,11 @@ sub set_global_code_variables
$installer::globals::productcode = "\{" . ${$guidref}[0] . "\}";
}
- if ( $installer::globals::patch ) # patch upgrade codes are defined in soffice.lst
- {
- if ( $allvariableshashref->{'PATCHUPGRADECODE'} ) { $installer::globals::upgradecode = $allvariableshashref->{'PATCHUPGRADECODE'}; }
- else { installer::exiter::exit_program("ERROR: PATCHUPGRADECODE not defined in list file!", "set_global_code_variables"); }
- }
- else
- {
- # UpgradeCode can take english as default, if not defined in specified language
+ # UpgradeCode can take english as default, if not defined in specified language
- $searchstring = "UPGRADECODE"; # searching in the codes.txt file
- $codeblock = installer::windows::idtglobal::get_language_block_from_language_file($searchstring, $codefile);
- $installer::globals::upgradecode = installer::windows::idtglobal::get_language_string_from_language_block($codeblock, $onelanguage, "");
- }
+ $searchstring = "UPGRADECODE"; # searching in the codes.txt file
+ $codeblock = installer::windows::idtglobal::get_language_block_from_language_file($searchstring, $codefile);
+ $installer::globals::upgradecode = installer::windows::idtglobal::get_language_string_from_language_block($codeblock, $onelanguage, "");
if ( $installer::globals::upgradecode eq "" ) { installer::exiter::exit_program("ERROR: UpgradeCode not defined in $installer::globals::codefilename !", "set_global_code_variables"); }
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 56f4ba5da0cb..58435d6e130e 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -56,13 +56,6 @@ sub get_arpcomments_for_property_table
if ( $installer::globals::languagepack ) { $comment = $comment . " " . "Language Pack"; }
elsif ( $installer::globals::helppack ) { $comment = $comment . " " . "Help Pack"; }
- if ( $installer::globals::patch )
- {
- if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_arpcomments_for_property_table"); }
- my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
- $comment = $comment . " " . $patchstring;
- }
-
my $languagestring = $$languagestringref;
$languagestring =~ s/\_/\,/g;
@@ -181,13 +174,6 @@ sub get_productname_for_property_table($$)
$productname = $name . " " . $version . " Help Pack" . " " . $langstring;
}
- if ( $installer::globals::patch )
- {
- if ( ! $allvariables->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Patch level defined for Windows patch: WINDOWSPATCHLEVEL", "get_productname_for_property_table"); }
- my $patchstring = "Product Update" . " " . $allvariables->{'WINDOWSPATCHLEVEL'};
- $productname = $productname . " " . $patchstring;
- }
-
# Saving this name in hash $allvariables for further usage
$allvariables->{'PROPERTYTABLEPRODUCTNAME'} = $productname;
my $infoline = "Defined variable PROPERTYTABLEPRODUCTNAME: $productname\n";
@@ -217,23 +203,6 @@ sub get_productversion_for_property_table
}
#######################################################
-# Setting all feature names as Properties. This is
-# required for the Windows patch process.
-#######################################################
-
-sub set_featurename_properties_for_patch
-{
- ($propertyfile) = @_;
-
- for ( my $i = 0; $i <= $#installer::globals::featurecollector; $i++ )
- {
- my $onepropertyline = $installer::globals::featurecollector[$i] . "\t" . "1" . "\n";
- push(@{$propertyfile}, $onepropertyline);
- }
-
-}
-
-#######################################################
# Setting some important properties
# (for finding the product in deinstallation process)
#######################################################
@@ -329,12 +298,6 @@ sub set_important_properties
push(@{$propertyfile}, $onepropertyline);
}
- if ( $installer::globals::patch )
- {
- my $onepropertyline = "ISPATCH" . "\t" . "1" . "\n";
- push(@{$propertyfile}, $onepropertyline);
- }
-
if ( $installer::globals::languagepack )
{
my $onepropertyline = "ISLANGUAGEPACK" . "\t" . "1" . "\n";
@@ -503,9 +466,6 @@ sub update_property_table
# Setting variables into propertytable
set_important_properties($propertyfile, $allvariables, $languagestringref);
- # Setting feature names as properties for Windows patch mechanism
- if ( $installer::globals::patch ) { set_featurename_properties_for_patch($propertyfile); }
-
# Setting variables for register for ms file types
set_ms_file_types_properties($propertyfile);
diff --git a/solenv/bin/modules/installer/windows/upgrade.pm b/solenv/bin/modules/installer/windows/upgrade.pm
index 547bc4ce7bf1..91f5f71c6080 100644
--- a/solenv/bin/modules/installer/windows/upgrade.pm
+++ b/solenv/bin/modules/installer/windows/upgrade.pm
@@ -65,67 +65,64 @@ sub create_upgrade_table
$newline = $installer::globals::upgradecode . "\t" . $installer::globals::msimajorproductversion . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "769" . "\t" . "\t" . "OLDPRODUCTSSAMEMAJOR" . "\n";
push(@upgradetable, $newline);
- if ( ! $installer::globals::patch )
- {
- # preventing downgrading
- $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTS" . "\n";
+ # preventing downgrading
+ $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTS" . "\n";
+ push(@upgradetable, $newline);
+
+ # $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTS" . "\n";
+ # push(@upgradetable, $newline);
+
+ if ( $include_ooo_fix )
+ {
+ $newline = $installer::globals::upgradecode . "\t" . "35.0.0" . "\t" . "36.0.0" . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTS2" . "\n";
+ push(@upgradetable, $newline);
+ }
+
+ # if (( $allvariableshashref->{'PATCHUPGRADECODE'} ) && ( ! $installer::globals::languagepack ))
+ # {
+ # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTSPATCH" . "\n";
+ # push(@upgradetable, $newline);
+ #
+ # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTSPATCH" . "\n";
+ # push(@upgradetable, $newline);
+ #
+ # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTSPATCH" . "\n";
+ # push(@upgradetable, $newline);
+ # }
+
+ # also searching for the beta
+
+ if (( $allvariableshashref->{'BETAUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
+ {
+ $newline = $allvariableshashref->{'BETAUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "BETAPRODUCTS" . "\n";
push(@upgradetable, $newline);
+ }
- # $newline = $installer::globals::upgradecode . "\t" . $installer::globals::msiproductversion . "\t" . $ooomaxnew . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTS" . "\n";
- # push(@upgradetable, $newline);
-
- if ( $include_ooo_fix )
- {
- $newline = $installer::globals::upgradecode . "\t" . "35.0.0" . "\t" . "36.0.0" . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTS2" . "\n";
- push(@upgradetable, $newline);
- }
-
- # if (( $allvariableshashref->{'PATCHUPGRADECODE'} ) && ( ! $installer::globals::languagepack ))
- # {
- # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "1" . "\t" . "\t" . "OLDPRODUCTSPATCH" . "\n";
- # push(@upgradetable, $newline);
- #
- # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "2" . "\t" . "\t" . "NEWPRODUCTSPATCH" . "\n";
- # push(@upgradetable, $newline);
- #
- # $newline = $allvariableshashref->{'PATCHUPGRADECODE'} . "\t" . $installer::globals::msiproductversion . "\t" . "\t" . "\t" . "258" . "\t" . "\t" . "SAMEPRODUCTSPATCH" . "\n";
- # push(@upgradetable, $newline);
- # }
-
- # also searching for the beta
-
- if (( $allvariableshashref->{'BETAUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
- {
- $newline = $allvariableshashref->{'BETAUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "BETAPRODUCTS" . "\n";
- push(@upgradetable, $newline);
- }
-
- # also searching for the stub
-
- if (( $allvariableshashref->{'STUBUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
- {
- $newline = $allvariableshashref->{'STUBUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "STUBPRODUCTS" . "\n";
- push(@upgradetable, $newline);
- }
-
- # searching for all older patches and languagepacks (defined in a extra file)
-
- if (( $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
- {
- my $filename = $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'};
- my $langpackcodefilename = $installer::globals::idttemplatepath . $installer::globals::separator . $filename;
- if ( ! -f $langpackcodefilename ) { installer::exiter::exit_program("ERROR: Could not find file \"$langpackcodefilename\".", "create_upgrade_table"); }
-
- my $filecontent = installer::files::read_file($langpackcodefilename);
- my $newlines = analyze_file_for_upgrade_table($filecontent);
-
- for ( my $i = 0; $i <= $#{$newlines}; $i++ ) { push(@upgradetable, ${$newlines}[$i]); }
- }
- }
+ # also searching for the stub
+
+ if (( $allvariableshashref->{'STUBUPGRADECODE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
+ {
+ $newline = $allvariableshashref->{'STUBUPGRADECODE'} . "\t" . "1.0" . "\t" . "\t" . "\t" . "1" . "\t" . "\t" . "STUBPRODUCTS" . "\n";
+ push(@upgradetable, $newline);
+ }
+
+ # searching for all older patches and languagepacks (defined in a extra file)
+
+ if (( $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'} ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
+ {
+ my $filename = $allvariableshashref->{'REMOVE_UPGRADE_CODE_FILE'};
+ my $langpackcodefilename = $installer::globals::idttemplatepath . $installer::globals::separator . $filename;
+ if ( ! -f $langpackcodefilename ) { installer::exiter::exit_program("ERROR: Could not find file \"$langpackcodefilename\".", "create_upgrade_table"); }
+
+ my $filecontent = installer::files::read_file($langpackcodefilename);
+ my $newlines = analyze_file_for_upgrade_table($filecontent);
+
+ for ( my $i = 0; $i <= $#{$newlines}; $i++ ) { push(@upgradetable, ${$newlines}[$i]); }
+ }
# No upgrade for Beta versions!
- if (( $allvariableshashref->{'PRODUCTEXTENSION'} eq "Beta" ) && ( ! $installer::globals::patch ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
+ if (( $allvariableshashref->{'PRODUCTEXTENSION'} eq "Beta" ) && ( ! $installer::globals::languagepack ) && ( ! $installer::globals::helppack ))
{
@upgradetable = ();
installer::windows::idtglobal::write_idt_header(\@upgradetable, "upgrade");
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index f860f632df76..9a122e46f255 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -44,57 +44,6 @@ use installer::scriptitems;
use installer::systemactions;
use installer::windows::language;
-#################################################
-# Writing some global information into
-# the list of files without flag PATCH
-#################################################
-
-sub write_nopatchlist_header
-{
- my ( $content ) = @_;
-
- my @header = ();
- my $infoline = "This is a list of files, that are defined in scp-projects without\n";
- push(@header, $infoline);
- $infoline = "flag \"PATCH\". Important: This does not mean in any case, that \n";
- push(@header, $infoline);
- $infoline = "this files are included into or excluded from a patch. \n\n";
- push(@header, $infoline);
- $infoline = "Exception Linux: A patch rpm is a complete rpm. This means that all \n";
- push(@header, $infoline);
- $infoline = "files are included into a patch rpm, if only one file of the rpm has the \n";
- push(@header, $infoline);
- $infoline = "style \"PATCH\". \n\n";
- push(@header, $infoline);
-
- for ( my $i = 0; $i <= $#header; $i++ ) { push(@{$content},$header[$i]); }
-}
-
-#################################################
-# Creating the content of the list of files
-# without flag PATCH.
-# All files are saved in
-# @{$installer::globals::nopatchfilecollector}
-#################################################
-
-sub create_nopatchlist
-{
- my @content =();
-
- write_nopatchlist_header(\@content);
-
- for ( my $i = 0; $i <= $#{$installer::globals::nopatchfilecollector}; $i++ )
- {
- my $onefile = ${$installer::globals::nopatchfilecollector}[$i];
- my $oneline = $onefile->{'destination'};
- if ( $onefile->{'zipfilename'} ) { $oneline = $oneline . " (" . $onefile->{'zipfilename'} . ")"; }
- $oneline = $oneline . "\n";
- push(@content, $oneline);
- }
-
- return \@content;
-}
-
#########################################
# Saving the patchlist file
#########################################
@@ -109,14 +58,6 @@ sub _save_patchlist_file
installer::files::save_file($installpatchlistdir . $installer::globals::separator . $patchlistfilename, \@installer::globals::patchfilecollector);
installer::logger::print_message( "... creating patchlist file $patchlistfilename \n" );
- if (( $installer::globals::patch ) && ( ! $installer::globals::creating_windows_installer_patch )) # only for non-Windows patches
- {
- $patchlistfilename =~ s/patchfiles\_/nopatchfiles\_/;
- my $nopatchlist = create_nopatchlist();
- installer::files::save_file($installpatchlistdir . $installer::globals::separator . $patchlistfilename, $nopatchlist);
- installer::logger::print_message( "... creating patch exclusion file $patchlistfilename \n" );
- }
-
}
###############################################################
@@ -221,7 +162,7 @@ sub analyze_and_save_logfile
installer::files::save_file($installlogdir . $installer::globals::separator . $numberedlogfilename, \@installer::globals::logfileinfo);
# Saving the list of patchfiles in a patchlist directory in the install directory
- if (( $installer::globals::patch ) || ( $installer::globals::creating_windows_installer_patch )) { _save_patchlist_file($installlogdir, $numberedlogfilename); }
+ if ( $installer::globals::creating_windows_installer_patch ) { _save_patchlist_file($installlogdir, $numberedlogfilename); }
if ( $installer::globals::creating_windows_installer_patch ) { $installer::globals::creating_windows_installer_patch = 0; }
@@ -313,20 +254,6 @@ sub collect_all_items_with_special_flag
}
##############################################################
-# Collecting all files without patch flag in
-# $installer::globals::nopatchfilecollector
-##############################################################
-
-sub collect_all_files_without_patch_flag
-{
- my ($filesref) = @_;
-
- my $newfiles = collect_all_items_without_special_flag($filesref, "PATCH");
-
- for ( my $i = 0; $i <= $#{$newfiles}; $i++ ) { push(@{$installer::globals::nopatchfilecollector}, ${$newfiles}[$i]); }
-}
-
-##############################################################
# Collecting all items without a defined flag
##############################################################
@@ -489,63 +416,6 @@ sub install_simple ($$$$$$)
}
###########################################################
-# Selecting patch items
-###########################################################
-
-sub select_patch_items
-{
- my ( $itemsref, $itemname ) = @_;
-
- installer::logger::include_header_into_logfile("Selecting items for patches. Item: $itemname");
-
- my @itemsarray = ();
-
- for ( my $i = 0; $i <= $#{$itemsref}; $i++ )
- {
- my $oneitem = ${$itemsref}[$i];
-
- my $name = $oneitem->{'Name'};
- if (( $name =~ /\bLICENSE/ ) || ( $name =~ /\bREADME/ ))
- {
- push(@itemsarray, $oneitem);
- next;
- }
-
- # Items with style "PATCH" have to be included into the patch
- my $styles = "";
- if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; }
- if ( $styles =~ /\bPATCH\b/ ) { push(@itemsarray, $oneitem); }
- }
-
- return \@itemsarray;
-}
-
-###########################################################
-# Selecting patch items
-###########################################################
-
-sub select_patch_items_without_name
-{
- my ( $itemsref, $itemname ) = @_;
-
- installer::logger::include_header_into_logfile("Selecting RegistryItems for patches");
-
- my @itemsarray = ();
-
- for ( my $i = 0; $i <= $#{$itemsref}; $i++ )
- {
- my $oneitem = ${$itemsref}[$i];
-
- # Items with style "PATCH" have to be included into the patch
- my $styles = "";
- if ( $oneitem->{'Styles'} ) { $styles = $oneitem->{'Styles'}; }
- if ( $styles =~ /\bPATCH\b/ ) { push(@itemsarray, $oneitem); }
- }
-
- return \@itemsarray;
-}
-
-###########################################################
# Selecting langpack items
###########################################################
@@ -596,257 +466,6 @@ sub select_helppack_items
}
###########################################################
-# Searching if LICENSE and README, which are not removed
-# in select_patch_items are really needed for the patch.
-# If not, they are removed now.
-###########################################################
-
-sub analyze_patch_files
-{
- my ( $filesref ) = @_;
-
- installer::logger::include_header_into_logfile("Analyzing patch files");
-
- my @filesarray = ();
-
- for ( my $i = 0; $i <= $#{$filesref}; $i++ )
- {
- my $onefile = ${$filesref}[$i];
- my $styles = "";
- if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
- if ( !( $styles =~ /\bPATCH\b/) ) { next; } # removing all files without flag PATCH (LICENSE, README, ...)
-
- if ( $installer::globals::iswindowsbuild )
- {
- # all files of the Windows patch belong to the root module
- $onefile->{'modules'} = $installer::globals::rootmodulegid;
- }
-
- push(@filesarray, $onefile);
- }
-
- return \@filesarray;
-}
-
-###########################################################
-# reorganizing the patchfile content,
-# sorting for directory to decrease the file size
-###########################################################
-
-sub reorg_patchfile
-{
- my ($patchfiles, $patchfiledirectories) = @_;
-
- my @patchfilesarray = ();
- my $line = "";
- my $directory = "";
-
- # iterating over all directories, writing content into new patchfiles list
-
- for ( my $i = 0; $i <= $#{$patchfiledirectories}; $i++ )
- {
- $directory = ${$patchfiledirectories}[$i];
- $line = "[" . $directory . "]" . "\n";
- push(@patchfilesarray, $line);
-
- for ( my $j = 0; $j <= $#{$patchfiles}; $j++ )
- {
- if ( ${$patchfiles}[$j] =~ /^\s*(.*?)\s*\tXXXXX\t\Q$directory\E\s*$/ )
- {
- $line = $1 . "\n";
- push(@patchfilesarray, $line);
- }
- }
- }
-
- return \@patchfilesarray;
-}
-
-###########################################################
-# One special file has to be the last in patchfile.txt.
-# Controlling this file, guarantees, that all files were
-# patch correctly. Using version.ini makes it easy to
-# control this by looking into the about box
-# -> shifting one section to the end
-###########################################################
-
-sub shift_section_to_end
-{
- my ($patchfilelist) = @_;
-
- my @patchfile = ();
- my @lastsection = ();
- my $lastsection = "program";
- my $notlastsection = "Basis\\program";
- my $record = 0;
-
- for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ )
- {
- my $line = ${$patchfilelist}[$i];
-
- if (( $record ) && ( $line =~ /^\s*\[/ )) { $record = 0; }
-
- if (( $line =~ /^\s*\[\Q$lastsection\E\\\]\s*$/ ) && ( ! ( $line =~ /\Q$notlastsection\E\\\]\s*$/ ))) { $record = 1; }
-
- if ( $record ) { push(@lastsection, $line); }
- else { push(@patchfile, $line); }
- }
-
- if ( $#lastsection > -1 )
- {
- for ( my $i = 0; $i <= $#lastsection; $i++ )
- {
- push(@patchfile, $lastsection[$i]);
- }
- }
-
- return \@patchfile;
-}
-
-###########################################################
-# One special file has to be the last in patchfile.txt.
-# Controlling this file, guarantees, that all files were
-# patch correctly. Using version.ini makes it easy to
-# control this by looking into the about box
-# -> shifting one file of the last section to the end
-###########################################################
-
-sub shift_file_to_end
-{
- my ($patchfilelist) = @_;
-
- my @patchfile = ();
- my $lastfilename = "version.ini";
- my $lastfileline = "";
- my $foundfile = 0;
-
- # Only searching this file in the last section
- my $lastsectionname = "";
-
- for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ )
- {
- my $line = ${$patchfilelist}[$i];
- if ( $line =~ /^\s*\[(.*?)\]\s*$/ ) { $lastsectionname = $1; }
- }
-
- my $record = 0;
- for ( my $i = 0; $i <= $#{$patchfilelist}; $i++ )
- {
- my $line = ${$patchfilelist}[$i];
-
- if ( $line =~ /^\s*\[\Q$lastsectionname\E\]\s*$/ ) { $record = 1; }
-
- if (( $line =~ /^\s*\"\Q$lastfilename\E\"\=/ ) && ( $record ))
- {
- $lastfileline = $line;
- $foundfile = 1;
- $record = 0;
- next;
- }
-
- push(@patchfile, $line);
- }
-
- if ( $foundfile ) { push(@patchfile, $lastfileline); }
-
- return \@patchfile;
-}
-
-###########################################################
-# Renaming Windows files in Patch and creating file
-# patchfiles.txt
-###########################################################
-
-sub prepare_windows_patchfiles
-{
- my ( $filesref, $languagestringref, $allvariableshashref ) = @_;
-
- my @patchfiles = ();
- my %patchfiledirectories = ();
- my $patchfilename = "patchlist.txt";
- my $patchfilename2 = "patchmsi.dll";
-
- if ( ! $allvariableshashref->{'WINDOWSPATCHLEVEL'} ) { installer::exiter::exit_program("ERROR: No Windows patch level defined in list file (WINDOWSPATCHLEVEL) !", "prepare_windows_patchfiles"); }
- my $windowspatchlevel = $installer::globals::buildid;
-
- for ( my $i = 0; $i <= $#{$filesref}; $i++ )
- {
- my $onefile = ${$filesref}[$i];
-
- my $filename = $onefile->{'Name'};
- if (( $filename eq $patchfilename ) || ( $filename eq $patchfilename2 )) { next; }
-
- my $styles = "";
- if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
- if ( $styles =~ /\bDONTRENAMEINPATCH\b/ ) { next; }
-
- # special handling for files with flag DONTSHOW. This files get the extension ".dontshow" to be filtered by dialogs.
- my $localwindowspatchlevel = $windowspatchlevel;
- if ( $styles =~ /\bDONTSHOW\b/ ) { $localwindowspatchlevel = $localwindowspatchlevel . "\.dontshow"; }
-
- my $olddestination = $onefile->{'destination'};
- my $newdestination = $olddestination . "." . $localwindowspatchlevel;
- my $localfilename = $olddestination;
- installer::pathanalyzer::make_absolute_filename_to_relative_filename(\$localfilename); # file name part
- my $line = "\"" . $localfilename . "\"" . "=" . "\"" . "\." . $localwindowspatchlevel . "\"";
- $onefile->{'destination'} = $newdestination;
-
- my $newfilename = $onefile->{'Name'} . "." . $localwindowspatchlevel;
- $onefile->{'Name'} = $newfilename;
-
- # adding section information (section is the directory)
- my $origolddestination = $olddestination;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$olddestination); # directory part
- if ( ! $olddestination ) { $olddestination = "_root"; }
- if ( ! exists($patchfiledirectories{$olddestination}) ) { $patchfiledirectories{$olddestination} = 1; }
- $line = $line . "\tXXXXX\t" . $olddestination . "\n";
-
- push(@patchfiles, $line);
-
- # also collecting all files from patch in @installer::globals::patchfilecollector
- my $patchfileline = $origolddestination . "\n";
- push(@installer::globals::patchfilecollector, $patchfileline);
- }
-
- my $winpatchdirname = "winpatch";
- my $winpatchdir = installer::systemactions::create_directories($winpatchdirname, $languagestringref);
-
- my ($patchlistfile) = grep {$_->{Name} eq $patchfilename} @{$filesref};
- if (! defined $patchlistfile) {
- installer::exiter::exit_program("ERROR: Could not find file $patchfilename in list of files!", "prepare_windows_patchfiles");
- }
-
- # reorganizing the patchfile content, sorting for directory to decrease the file size
- my $sorteddirectorylist = [ sort keys %patchfiledirectories ];
- my $patchfilelist = reorg_patchfile(\@patchfiles, $sorteddirectorylist);
-
- # shifting version.ini to the end of the list, to guarantee, that all files are patched
- # if the correct version is shown in the about box
- $patchfilelist = shift_section_to_end($patchfilelist);
- $patchfilelist = shift_file_to_end($patchfilelist);
-
- # saving the file
- $patchfilename = $winpatchdir . $installer::globals::separator . $patchfilename;
- installer::files::save_file($patchfilename, $patchfilelist);
-
- my $infoline = "\nCreated list of patch files: $patchfilename\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- # and assigning the new source
- $patchlistfile->{'sourcepath'} = $patchfilename;
-
- # and finally checking the file size
- if ( -f $patchfilename ) # test of existence
- {
- my $filesize = ( -s $patchfilename );
- $infoline = "Size of patch file list: $filesize\n\n";
- push( @installer::globals::logfileinfo, $infoline);
- installer::logger::print_message( "... size of patch list file: $filesize Byte ... \n" );
- }
-
-}
-
-###########################################################
# Replacing %-variables with the content
# of $allvariableshashref
###########################################################
diff --git a/solenv/bin/modules/installer/ziplist.pm b/solenv/bin/modules/installer/ziplist.pm
index c9ba2388ae92..aa15ba02061d 100644
--- a/solenv/bin/modules/installer/ziplist.pm
+++ b/solenv/bin/modules/installer/ziplist.pm
@@ -852,8 +852,7 @@ sub add_variables_to_allvariableshashref
$variableshashref->{'LCPRODUCTEXTENSION'} = "";
}
- if ( $installer::globals::patch ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::patchaddon; }
- elsif ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; }
+ if ( $installer::globals::languagepack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::languagepackaddon; }
elsif ( $installer::globals::helppack ) { $variableshashref->{'PRODUCTADDON'} = $installer::globals::helppackpackaddon; }
else { $variableshashref->{'PRODUCTADDON'} = ""; }
diff --git a/solenv/bin/oochkpatch b/solenv/bin/oochkpatch
deleted file mode 100755
index 4e5a9051dac8..000000000000
--- a/solenv/bin/oochkpatch
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This file incorporates work covered by the following license notice:
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed
-# with this work for additional information regarding copyright
-# ownership. The ASF licenses this file to you under the Apache
-# License, Version 2.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.apache.org/licenses/LICENSE-2.0 .
-#
-if [ x${SOLARENV}x = xx ]; then
- echo No environment found, please use 'configure' or 'setsolar'
- exit 1
-fi
-exec perl -w $SOLARENV/bin/oochkpatch.pl "$@"
diff --git a/solenv/bin/oochkpatch.pl b/solenv/bin/oochkpatch.pl
deleted file mode 100644
index 82a7d7b5a761..000000000000
--- a/solenv/bin/oochkpatch.pl
+++ /dev/null
@@ -1,292 +0,0 @@
-:
- eval 'exec perl -S $0 ${1+"$@"}'
- if 0;
-#
-# This file is part of the LibreOffice project.
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-#
-# This file incorporates work covered by the following license notice:
-#
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed
-# with this work for additional information regarding copyright
-# ownership. The ASF licenses this file to you under the Apache
-# License, Version 2.0 (the "License"); you may not use this file
-# except in compliance with the License. You may obtain a copy of
-# the License at http://www.apache.org/licenses/LICENSE-2.0 .
-#
-#
-# oochkpatch - check patch flags against CWS modules
-#
-
-require File::Temp;
-require File::Find;
-require Getopt::Long;
-require Pod::Usage;
-use Pod::Usage;
-use Getopt::Long;
-use File::Temp qw/ tempfile tempdir /;
-use File::Find;
-
-
-# configuration goes here
-##########################################################
-
-# uncomment this, if in pure OOo environment
-#my $toplevel_module = "instsetoo_native";
-#my $scp_module = "scp2";
-#my $setup_file = "setup_osl";
-
-# uncomment this, if within the StarOffice environment
-my $toplevel_module = "instset_native";
-my $scp_module = "scp2so";
-my $setup_file = "setup";
-
-my $deliver = "solenv/bin/deliver.pl";
-my $build = "solenv/bin/build.pl";
-
-# list of hardcoded exceptions (files that are _never_ considered
-# missing from the patch)
-my %hardcoded_exceptions = ('build.lst' => 1);
-
-
-# no configuration below this point, please!
-##########################################################
-
-# defaults
-my $from_module = "";
-my $verbose = '';
-my $help = '';
-my $man = '';
-my $modules = '';
-my $from = '';
-my $perl = '';
-
-GetOptions('help|?' => \$help,
- 'man' => \$man,
- 'verbose' => \$verbose,
- 'from=s' => \$from_module ) or pod2usage(2);
-pod2usage(1) if $help;
-pod2usage(-exitstatus => 0, -verbose => 2) if $man;
-
-# process remaining args
-print "Processing args...\n" if $verbose;
-foreach my $argument (@ARGV)
-{
- print " Checking module ", $argument, "\n" if $verbose;
- push @modules, $argument;
-}
-
-# platform-dependent stuff
-if( $^O eq 'MSWin32' )
-{
- $perl = "$ENV{COMSPEC} -c $ENV{PERL}";
- $setup_file = $setup_file . ".inf";
-}
-else
-{
- $perl = 'perl';
- $setup_file = $setup_file . ".ins";
-};
-
-# read some SOLAR stuff from env
-my $SRC_ROOT = $ENV{"SRC_ROOT"};
-my $INPATH = $ENV{"INPATH"};
-
-# process --from modules
-if( $from_module )
-{
- print "Checking all modules upwards and including ", $from_module, "\n" if $verbose;
-
- # append build.pl-generated list of modules
- chdir "$SRC_ROOT/$toplevel_module" or
- chdir "$SRC_ROOT/$toplevel_module.lnk" or die "ERROR: cannot cd to $SRC_ROOT/$toplevel_module!";
- open(ALLMODULES,
- "$perl $SRC_ROOT/$build --all:$from_module --show 2>&1 |") or die "ERROR: cannot build --show!\n";
- while(<ALLMODULES>)
- {
- if( /Building project/ )
- {
- my @module = split( /\s+/, $_ );
- print " which is ", $module[2], "\n" if $verbose;
- push(@modules,$module[2]);
- }
- }
-}
-
-die "ERROR: no modules to check!\n" if !@modules;
-
-$tempdir = tempdir( TMPDIR => 1, CLEANUP => 1);
-
-# generate list of files with PATCH flag
-print "Generating list of files which have the PATCH flag...\n" if $verbose;
-
-my $path_to_setup_file = $SRC_ROOT."/".$scp_module."/".$INPATH."/bin/osl/".$setup_file;
-my $alternate_path_to_setup_file = $SRC_ROOT."/".$scp_module.".lnk/".$INPATH."/bin/osl/".$setup_file;
-my $in_file_block=0;
-my $patch_flag=0;
-my $file_name='';
-my $base;
-my $ext;
-my %pack_files;
-open(SETUP, "<".$path_to_setup_file) or
- open(SETUP, "<".$alternate_path_to_setup_file) or die "ERROR: cannot open $path_to_setup_file!\n";
-while(<SETUP>)
-{
- if( /^File\s+/ && !$in_file_block )
- {
- $in_file_block = 1;
- $patch_flag=0;
- $file_name='';
- }
- elsif( /^End/ && $file_name ne '' && $in_file_block )
- {
- $file_name =~ s/["']//g;
- $pack_files{$file_name} = $patch_flag;
-
- if( $patch_flag )
- {
- print( " File $file_name included in patch\n") if $verbose;
- }
- else
- {
- print( " File $file_name NOT included in patch\n") if $verbose;
- }
-
- $in_file_block = 0;
- }
- elsif( /^\s+Styles\s*=\s*.*PATCH/ && $in_file_block )
- {
- $patch_flag = 1;
- }
- elsif( ($res) = /^\s+Name\s*=\s*(.*);/ )
- {
- $file_name = $res;
- }
-}
-
-# generate list of delivered files
-print "Generating list of delivered libs...\n" if $verbose;
-
-# first, deliver all modules to tempdir
-foreach my $module (@modules)
-{
- print " dummy-delivering $module...\n" if $verbose;
- chdir "$SRC_ROOT/$module" or
- chdir "$SRC_ROOT/$module.lnk" or die "ERROR: cannot cd to $SRC_ROOT/$module!";
- `$perl $SRC_ROOT/$deliver $tempdir`;
-}
-
-# now, check all files in delivered dirs for containedness in PATCH
-# set
-print "Checking against delivered files...\n" if $verbose;
-find(\&wanted, $tempdir );
-
-sub wanted
-{
- my $fname;
-
- if( -f )
- {
- $fname = $_;
- if( !exists $pack_files{$fname} )
- {
- print " File $fname is not packed.\n" if $verbose;
- }
- elsif( $pack_files{$fname} == 0 )
- {
- if( !$hardcoded_exceptions{ $fname } )
- {
- # file not in patch set, and not in exception list
- print " File $fname is packed, but NOT included in patch set and part of delivered output\n" if $verbose;
- print "$fname\n" if !$verbose;
- }
- else
- {
- print " File $fname is NOT included in patch set, but member of hardcoded exception list\n" if $verbose;
- }
- }
- elsif( $pack_files{$fname} == 1 )
- {
- print " File $fname packed and patched.\n" if $verbose;
- }
- }
-}
-
-
-__END__
-
-=head1 NAME
-
-oochkpatch.pl - Verify patch flags against module libraries
-
-=head1 SYNOPSIS
-
-oochkpatch.pl [options] [module-name ...]
-
- Options:
- --help|-h brief help message
- --man|-m full documentation
- --verbose|-v tell what's happening
- --from=module check all modules from
- given one upwards
-
-=head1 OPTIONS
-
-=over 8
-
-=item B<--help>
-
-Print a brief help message and exits.
-
-=item B<--man>
-
-Prints the manual page and exits.
-
-=item B<--verbose>
-
-Verbosely tell what's currently happening
-
-=item B<--from=module>
-
-Assumes OOo was built incompatibly from given module
-upwards, and check against all libs from all upwards modules.
-Further modules can be given at the command line, which are merged
-with the ones generated from this option
-
-=back
-
-=head1 DESCRIPTION
-
-B<This program> will compare all libs delivered from the specified modules
-against the set of files marked with the B<patch> flag in scp2. Useful to check
-if the patch set is complete. Please note that this program needs to be run in
-a solar shell, i.e. the OOo build environment needs to be set up in the shell.
-
-There's kind of a heuristic involved, to determine exactly which files
-to check against includedness in the patch set (since e.g. all headers
-are delivered, but clearly need not be checked against patch
-flags). It works by first collecting all files that are mentioned in
-the pack master file, and then checking all files delivered from the
-specified modules against that pack list: if the file is not packed,
-or if it's packed and has the patch flag set, all is well. Otherwise,
-the file in question potentially misses the patch flag (because one of
-the modified modules contains it).
-
-=head1 EXAMPLE
-
-To determine the set of libs not yet carrying the patch flag for a CWS
-containing sfx2, svx, and vcl, which is incompatible from sfx2
-upwards, use something like this:
-
-oochkpatch.pl --from=sfx2 `cwsquery modules`
-
-This puts every module upwards and including sfx2 in the check list,
-plus vcl. Note that with this approach, you'll usually get a larger
-set of files for the patch than necessary - but at least you get all
-files that might have changed theoretically.
-
-=cut