MSI: Fix use of illegal character in table Binary

ICE03 ERROR Invalid identifier; Table: Binary, Column: Name, Key(s): Windows61-KB2999226-x64msu
ICE03 ERROR Invalid identifier; Table: Binary, Column: Name, Key(s): Windows81-KB2999226-x64msu
ICE03 ERROR Invalid identifier; Table: Binary, Column: Name, Key(s): Windows8-RT-KB2999226-x64msu

We use the illegal "-" character.

https: //learn.microsoft.com/en-us/windows/win32/msi/binary-table
https: //learn.microsoft.com/en-us/windows/win32/msi/identifier
Change-Id: I44aea358964c085599ab42f134535fa97840dd26
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/166567
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
This commit is contained in:
kubak
2024-04-26 13:11:34 +02:00
committed by Mike Kaganski
parent 5467411488
commit 8a24efd16d
3 changed files with 9 additions and 8 deletions
+6 -6
View File
@@ -92,7 +92,7 @@ WindowsCustomAction gid_Customaction_check_win7x64_ucrt
Name = "check_win7x64_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows61-KB2999226-x64msu";
Target = "KB2999226|Windows61_KB2999226_x64msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 601 And VersionNT64", "FileCost");
Styles = "NO_FILE";
@@ -102,7 +102,7 @@ WindowsCustomAction gid_Customaction_check_win8x64_ucrt
Name = "check_win8x64_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows8-RT-KB2999226-x64msu";
Target = "KB2999226|Windows8_RT_KB2999226_x64msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 602 And VersionNT64", "check_win7x64_ucrt");
Styles = "NO_FILE";
@@ -112,7 +112,7 @@ WindowsCustomAction gid_Customaction_check_win81x64_ucrt
Name = "check_win81x64_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows81-KB2999226-x64msu";
Target = "KB2999226|Windows81_KB2999226_x64msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 603 And (Not WINMAJORVER Or WINMAJORVER = \"#6\") And VersionNT64", "check_win8x64_ucrt");
Styles = "NO_FILE";
@@ -128,7 +128,7 @@ WindowsCustomAction gid_Customaction_check_win7x32_ucrt
Name = "check_win7x32_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows61-KB2999226-x86msu";
Target = "KB2999226|Windows61_KB2999226_x86msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 601 And Not VersionNT64", "check_win81x64_ucrt");
Styles = "NO_FILE";
@@ -138,7 +138,7 @@ WindowsCustomAction gid_Customaction_check_win8x32_ucrt
Name = "check_win8x32_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows8-RT-KB2999226-x86msu";
Target = "KB2999226|Windows8_RT_KB2999226_x86msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 602 And Not VersionNT64", "check_win7x32_ucrt");
Styles = "NO_FILE";
@@ -148,7 +148,7 @@ WindowsCustomAction gid_Customaction_check_win81x32_ucrt
Name = "check_win81x32_ucrt";
Typ = "51";
Source = "InstMSUBinary";
Target = "KB2999226|Windows81-KB2999226-x86msu";
Target = "KB2999226|Windows81_KB2999226_x86msu";
Inbinarytable = 0;
Assignment1 = ("InstallExecuteSequence", "Not Installed And VersionNT = 603 And (Not WINMAJORVER Or WINMAJORVER = \"#6\") And Not VersionNT64", "check_win8x32_ucrt");
Styles = "NO_FILE";
@@ -456,7 +456,7 @@ extern "C" __declspec(dllexport) UINT __stdcall UnpackMSUForInstall(MSIHANDLE hI
CheckWin32Error("MsiGetPropertyW",
MsiGetPropertyW(hInstall, L"InstMSUBinary", sInstMSUBinary, &nCCh));
WriteLog(hInstall, "Got InstMSUBinary value:",
sInstMSUBinary); // KB2999226|Windows61-KB2999226-x64msu
sInstMSUBinary); // KB2999226|Windows61_KB2999226_x64msu
const wchar_t* sBinaryName = wcschr(sInstMSUBinary, L'|');
if (!sBinaryName)
throw std::exception("No KB number in InstMSUBinary!");
@@ -48,7 +48,8 @@ sub update_binary_table
my $binaryfilename = $binaryfile->{'Name'};
my $binaryfiledata = $binaryfilename;
$binaryfilename =~ s/\.//g; # removing "." in filename: "abc.dll" to "abcdll" in name column
$binaryfilename =~ s/\.//g; # removing "." in filename: "a-b-c.dll" to "a-b-cdll" in name column
$binaryfilename =~ s/\-/\_/g; # converting "-" to "_" in filename: "a-b-cdll" to "a_b_cdll" in name column
my %binary = ();