From e8027a55ef9d1223af62bbbc9c90e137227ed89e Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Tue, 21 Jan 2025 14:34:39 -0800 Subject: [PATCH] Do not chop extension when zipping mac files (#15438) --- .../SignToolTests.cs | 18 +++++++++--------- src/Microsoft.DotNet.SignTool/src/SignTool.cs | 12 +++++++++++- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/Microsoft.DotNet.SignTool.Tests/SignToolTests.cs b/src/Microsoft.DotNet.SignTool.Tests/SignToolTests.cs index 891853d0003..cad3c91a918 100644 --- a/src/Microsoft.DotNet.SignTool.Tests/SignToolTests.cs +++ b/src/Microsoft.DotNet.SignTool.Tests/SignToolTests.cs @@ -1288,7 +1288,7 @@ public void SignJustPkgWithoutUnpack() ValidateGeneratedProject(itemsToSign, strongNameSignInfo, fileSignInfo, s_fileExtensionSignInfo, new[] { $@" - + MacDeveloperHarden ", }); @@ -1341,11 +1341,11 @@ public void UnpackAndSignPkg() ", $@" - + MacDeveloperHarden ", $@" - + MacDeveloperHarden ", }); @@ -1411,16 +1411,16 @@ public void SignAndNotarizePkgFile() ", $@" - + MacDeveloperHarden ", $@" - + MacDeveloperHarden ", $@" - + 8020 com.microsoft.dotnet ", @@ -1473,7 +1473,7 @@ public void SignNestedPkgFile() ", $@" - + MacDeveloperHarden " }); @@ -1514,12 +1514,12 @@ public void SignPkgFileWithApp() ", $@" - + MacDeveloperHarden ", $@" - + MacDeveloperHarden " }); diff --git a/src/Microsoft.DotNet.SignTool/src/SignTool.cs b/src/Microsoft.DotNet.SignTool/src/SignTool.cs index 1e48241244d..669daf8f343 100644 --- a/src/Microsoft.DotNet.SignTool/src/SignTool.cs +++ b/src/Microsoft.DotNet.SignTool/src/SignTool.cs @@ -11,6 +11,7 @@ using System.Text; using Microsoft.Build.Framework; using Microsoft.Build.Utilities; +using NuGet.Packaging; namespace Microsoft.DotNet.SignTool { @@ -131,6 +132,8 @@ private void UnzipMacFiles(Dictionary zippedOSXFiles) ZipFile.ExtractToDirectory(item.Value, Path.GetDirectoryName(item.Key), true); #endif } + + File.Delete(item.Value); } } @@ -219,7 +222,14 @@ private string GenerateBuildFileContent(IEnumerable filesToSign, D protected virtual string GetZipFilePath(string fullPath) { - return Path.Combine(Path.GetDirectoryName(fullPath), Path.GetFileNameWithoutExtension(fullPath) + ".zip"); + var zipFilePath = Path.Combine(Path.GetDirectoryName(fullPath), Path.GetFileName(fullPath) + ".zip"); + // If the file already exists, it means that the user asked for another file to be signed with a colliding name. + // This is very unlikely. Throw in this case. + if (File.Exists(zipFilePath)) + { + throw new NotImplementedException($"The zip file path '{zipFilePath}' already exists."); + } + return zipFilePath; } private static void AppendLine(StringBuilder builder, int depth, string text)