diff --git a/Build/.nuke/build.schema.json b/Build/.nuke/build.schema.json index db5398f..a432725 100644 --- a/Build/.nuke/build.schema.json +++ b/Build/.nuke/build.schema.json @@ -90,6 +90,9 @@ "ProjectNameFolder": { "type": "boolean" }, + "ProjectRemoveAppendTargetFrameworkFolder": { + "type": "boolean" + }, "ProjectVersionFolder": { "type": "boolean" }, diff --git a/CHANGELOG.md b/CHANGELOG.md index 370eb5e..bc742d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [1.6.3] / 2023-12-06 - 2023-12-22 +### Features +- Add `ProjectRemoveTargetFrameworkFolder` to remove `net` folder in `PackageBuilder`. +- Update `ReleasePackageBuilder` to not create the Inno installation when false. +### Updated +- Update `Autodesk.PackageBuilder` to `1.0.6` +- Update `ricaun.Nuke` to `1.7.3` +### Example +- Update `AppendTargetFrameworkToOutputPath` to `true`. + ## [1.6.2] / 2023-11-19 ### Updated - Update `ricaun.Nuke` to `1.7.2` @@ -264,6 +274,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - First Release [vNext]: ../../compare/1.0.0...HEAD +[1.6.3]: ../../compare/1.6.2...1.6.3 [1.6.2]: ../../compare/1.6.1...1.6.2 [1.6.1]: ../../compare/1.6.0...1.6.1 [1.6.0]: ../../compare/1.5.1...1.6.0 diff --git a/Directory.Build.props b/Directory.Build.props index 1f7240e..c263cf6 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,5 +1,5 @@ - 1.6.2 + 1.6.3 \ No newline at end of file diff --git a/README.md b/README.md index 3bd4247..57b9e5d 100644 --- a/README.md +++ b/README.md @@ -46,6 +46,7 @@ bool IHazPackageBuilderProject.ReleasePackageBuilder => true; bool IHazPackageBuilderProject.ReleaseBundle => true; bool IHazPackageBuilderProject.ProjectNameFolder => true; bool IHazPackageBuilderProject.ProjectVersionFolder => true; +bool IHazPackageBuilderProject.ProjectRemoveTargetFrameworkFolder => true; ``` ### IHazRevitPackageBuilder diff --git a/RevitAddin.PackageBuilder.Example/Revit/App.cs b/RevitAddin.PackageBuilder.Example/Revit/App.cs index e6599e9..7afbdfe 100644 --- a/RevitAddin.PackageBuilder.Example/Revit/App.cs +++ b/RevitAddin.PackageBuilder.Example/Revit/App.cs @@ -12,7 +12,8 @@ public class App : IExternalApplication public Result OnStartup(UIControlledApplication application) { ribbonPanel = application.CreatePanel(GetRevitVersion()); - ribbonPanel.CreatePushButton(Properties.Resource.Text); + ribbonPanel.CreatePushButton(Properties.Resource.Text) + .SetLargeImage("/UIFrameworkRes;component/ribbon/images/revit.ico"); return Result.Succeeded; } diff --git a/RevitAddin.PackageBuilder.Example/RevitAddin.PackageBuilder.Example.csproj b/RevitAddin.PackageBuilder.Example/RevitAddin.PackageBuilder.Example.csproj index 2f50677..fca4dc8 100644 --- a/RevitAddin.PackageBuilder.Example/RevitAddin.PackageBuilder.Example.csproj +++ b/RevitAddin.PackageBuilder.Example/RevitAddin.PackageBuilder.Example.csproj @@ -6,7 +6,7 @@ AnyCPU true Latest - false + true None Debug 2019;2019;Debug 2020;2020;Debug 2021;2021;Debug 2022;2022;2023;2017 diff --git a/ricaun.Nuke.PackageBuilder/Components/IHazPackageBuilderProject.cs b/ricaun.Nuke.PackageBuilder/Components/IHazPackageBuilderProject.cs index a8b495b..aa6b374 100644 --- a/ricaun.Nuke.PackageBuilder/Components/IHazPackageBuilderProject.cs +++ b/ricaun.Nuke.PackageBuilder/Components/IHazPackageBuilderProject.cs @@ -42,6 +42,12 @@ public interface IHazPackageBuilderProject : IHazMainProject, IHazSolution, INuk [Parameter] bool ProjectVersionFolder => TryGetValue(() => ProjectVersionFolder) ?? true; + /// + /// Add ProjectRemoveTargetFrameworkFolder on the Contents (default: true) + /// + [Parameter] + bool ProjectRemoveTargetFrameworkFolder => TryGetValue(() => ProjectRemoveTargetFrameworkFolder) ?? true; + /// /// GetPackageBuilderProject by the Name /// diff --git a/ricaun.Nuke.PackageBuilder/Components/Revit/IRevitPackageBuilder.cs b/ricaun.Nuke.PackageBuilder/Components/Revit/IRevitPackageBuilder.cs index 6f4af3c..bfaf369 100644 --- a/ricaun.Nuke.PackageBuilder/Components/Revit/IRevitPackageBuilder.cs +++ b/ricaun.Nuke.PackageBuilder/Components/Revit/IRevitPackageBuilder.cs @@ -72,67 +72,72 @@ public void CreatePackageBuilder(Project project, bool releasePackageBuilder = f FileSystemTasks.CopyDirectoryRecursively(InputDirectory, ContentsDirectory); - CreateRevitAddinOnProjectFiles(project, ContentsDirectory); + if (ProjectRemoveTargetFrameworkFolder) + { + AppendTargetFrameworkExtension.RemoveAppendTargetFrameworkDirectory(ContentsDirectory); + } - // CopyInstallationFiles If Exists - CopyInstallationFilesTo(PackageBuilderDirectory); + CreateRevitAddinOnProjectFiles(project, ContentsDirectory); new RevitContentsBuilder(project, BundleDirectory, MiddleVersions, NewVersions) .Build(BundleDirectory / "PackageContents.xml"); - // Create Iss Files - try - { - Serilog.Log.Information($"IssPackageBuilder: {typeof(T)}"); - var issPackageBuilder = new T(); - issPackageBuilder - .Initialize(project) - .CreatePackage(PackageBuilderDirectory, IssConfiguration) - .CreateFile(PackageBuilderDirectory); - } - catch (Exception) + if (releasePackageBuilder) { - Serilog.Log.Error($"Error on IssPackageBuilder: {typeof(T)}"); - throw; - } + // CopyInstallationFiles If Exists + CopyInstallationFilesTo(PackageBuilderDirectory); + + // Create Iss Files + try + { + Serilog.Log.Information($"IssPackageBuilder: {typeof(T)}"); + var issPackageBuilder = new T(); + issPackageBuilder + .Initialize(project) + .CreatePackage(PackageBuilderDirectory, IssConfiguration) + .CreateFile(PackageBuilderDirectory); + } + catch (Exception) + { + Serilog.Log.Error($"Error on IssPackageBuilder: {typeof(T)}"); + throw; + } - // Deploy File - var outputInno = OutputDirectory; - var packageBuilderDirectory = GetMaxPathFolderOrTempFolder(PackageBuilderDirectory); - var issFiles = Globbing.GlobFiles(packageBuilderDirectory, $"*{projectName}.iss"); + // Deploy File + var outputInno = OutputDirectory; + var packageBuilderDirectory = GetMaxPathFolderOrTempFolder(PackageBuilderDirectory); + var issFiles = Globbing.GlobFiles(packageBuilderDirectory, $"*{projectName}.iss"); - if (issFiles.IsEmpty()) - Serilog.Log.Error($"Not found any .iss file in {packageBuilderDirectory}"); + if (issFiles.IsEmpty()) + Serilog.Log.Error($"Not found any .iss file in {packageBuilderDirectory}"); - issFiles.ForEach(file => - { - InnoSetupTasks.InnoSetup(config => config - .SetProcessToolPath(NuGetToolPathResolver.GetPackageExecutable("Tools.InnoSetup", "ISCC.exe")) - .SetScriptFile(file) - .SetOutputDir(outputInno)); - }); + issFiles.ForEach(file => + { + InnoSetupTasks.InnoSetup(config => config + .SetProcessToolPath(NuGetToolPathResolver.GetPackageExecutable("Tools.InnoSetup", "ISCC.exe")) + .SetScriptFile(file) + .SetOutputDir(outputInno)); + }); - // Sign outputInno - SignFolder(outputInno); + // Sign outputInno + SignFolder(outputInno); - // Zip exe Files - var exeFiles = Globbing.GlobFiles(outputInno, "**/*.exe"); - exeFiles.ForEach(file => ZipExtension.ZipFileCompact(file, projectNameVersion)); + // Zip exe Files + var exeFiles = Globbing.GlobFiles(outputInno, "**/*.exe"); + exeFiles.ForEach(file => ZipExtension.ZipFileCompact(file, projectNameVersion)); - if (exeFiles.IsEmpty()) - Serilog.Log.Error($"Not found any .exe file in {outputInno}"); + if (exeFiles.IsEmpty()) + Serilog.Log.Error($"Not found any .exe file in {outputInno}"); - var message = string.Join(" | ", exeFiles.Select(e => e.Name)); - ReportSummary(_ => _.AddPair("File", message)); + var message = string.Join(" | ", exeFiles.Select(e => e.Name)); + ReportSummary(_ => _.AddPair("File", message)); - if (outputInno != ReleaseDirectory) - { - Globbing.GlobFiles(outputInno, "**/*.zip") - .ForEach(file => FileSystemTasks.CopyFileToDirectory(file, ReleaseDirectory)); - } + if (outputInno != ReleaseDirectory) + { + Globbing.GlobFiles(outputInno, "**/*.zip") + .ForEach(file => FileSystemTasks.CopyFileToDirectory(file, ReleaseDirectory)); + } - if (releasePackageBuilder) - { var folder = Path.GetFileName(PackageBuilderDirectory); var releaseFileName = CreateReleaseFromDirectory(PackageBuilderDirectory, projectName, projectVersion, $".{folder}.zip"); Serilog.Log.Information($"Release: {releaseFileName}"); diff --git a/ricaun.Nuke.PackageBuilder/Extensions/AppendTargetFrameworkExtension.cs b/ricaun.Nuke.PackageBuilder/Extensions/AppendTargetFrameworkExtension.cs new file mode 100644 index 0000000..d10f234 --- /dev/null +++ b/ricaun.Nuke.PackageBuilder/Extensions/AppendTargetFrameworkExtension.cs @@ -0,0 +1,35 @@ +using Nuke.Common.IO; +using Nuke.Common.Utilities.Collections; + +namespace ricaun.Nuke.Extensions +{ + /// + /// AppendTargetFrameworkExtension + /// + public static class AppendTargetFrameworkExtension + { + /// + /// RemoveAppendTargetFrameworkDirectory + /// + /// + public static void RemoveAppendTargetFrameworkDirectory(AbsolutePath contentsDirectory) + { + Globbing.GlobDirectories(contentsDirectory, "**/net*") + .ForEach(targetFrameworkDirectory => + { + var directoryName = targetFrameworkDirectory.Name; + Serilog.Log.Information($"RemoveAppendTargetFrameworkDirectory: {directoryName} - {targetFrameworkDirectory}"); + if (targetFrameworkDirectory.Exists()) + { + if (targetFrameworkDirectory.Parent.ContainsFile("*") == false) + { + Serilog.Log.Information($"CopyDirectoryRecursively: {directoryName} to {targetFrameworkDirectory.Parent.Name}"); + Serilog.Log.Information($"RemoveTargetFrameworkDirectory: {directoryName} move to {targetFrameworkDirectory.Parent.Name}"); + FileSystemTasks.CopyDirectoryRecursively(targetFrameworkDirectory, targetFrameworkDirectory.Parent, DirectoryExistsPolicy.Merge); + targetFrameworkDirectory.DeleteDirectory(); + } + } + }); + } + } +}