diff --git a/DebUOS/Packaging.DebUOS.NuGet/Build/package.targets b/DebUOS/Packaging.DebUOS.NuGet/Build/package.targets index 267f7f5..4d71a9b 100644 --- a/DebUOS/Packaging.DebUOS.NuGet/Build/package.targets +++ b/DebUOS/Packaging.DebUOS.NuGet/Build/package.targets @@ -305,8 +305,8 @@ - - + + diff --git a/DebUOS/Packaging.DebUOS/Contexts/Configurations/DebUOSConfiguration.cs b/DebUOS/Packaging.DebUOS/Contexts/Configurations/DebUOSConfiguration.cs index 2ecd6a7..ebcd309 100644 --- a/DebUOS/Packaging.DebUOS/Contexts/Configurations/DebUOSConfiguration.cs +++ b/DebUOS/Packaging.DebUOS/Contexts/Configurations/DebUOSConfiguration.cs @@ -672,11 +672,13 @@ public string? ExcludePackingDebFileExtensions set => SetValue(value); get => GetString() ?? ".pdb;.dbg;.md"; } - + /// - /// 打包时是否将 bin 文件夹替换为应用版本号,默认不替换 + /// 打包时是否将 bin 文件夹替换为应用版本号,默认不替换。如设置为 True 将使用 属性的版本号作为文件夹名替换 bin 文件夹名 /// - public bool ReplaceBinWithAppVersion + /// 有些应用期望里层带版本号,即打出 `/opt/apps/${AppId}/files/${UOSDebVersion}/${AssemblyName}`格式的路径,如 `/opt/apps/com.dotnetcampus.app/files/1.0.0/app` 的路径,可以方便用来做软件更新。默认为 false 打出来的是 /opt/apps/${AppId}/files/bin/${AssemblyName} 格式的路径 + /// False + public bool UsingAppVersionInsteadOfBinOnDebPacking { set => SetValue(value); get => GetBoolean() ?? false; diff --git a/DebUOS/Packaging.DebUOS/DebUOSPackageFileStructCreator.cs b/DebUOS/Packaging.DebUOS/DebUOSPackageFileStructCreator.cs index ef0cc4c..59be021 100644 --- a/DebUOS/Packaging.DebUOS/DebUOSPackageFileStructCreator.cs +++ b/DebUOS/Packaging.DebUOS/DebUOSPackageFileStructCreator.cs @@ -90,7 +90,15 @@ public void CreatePackagingFolder(DebUOSConfiguration configuration) var appIdFolder = Path.Join(packingFolder, "opt", "apps", appId); var filesFolder = Path.Join(appIdFolder, "files"); Directory.CreateDirectory(filesFolder); - var applicationFolder = configuration.ReplaceBinWithAppVersion ? Path.Join(filesFolder, configuration.UOSDebVersion) : Path.Join(filesFolder, "bin"); + var binaryFolderName = "bin"; + if (configuration.UsingAppVersionInsteadOfBinOnDebPacking) + { + // 如果配置了使用版本号作为文件夹名,则使用版本号作为文件夹名 + // 否则使用 bin 作为文件夹名 + binaryFolderName = configuration.UOSDebVersion; + } + + var applicationFolder = Path.Join(filesFolder, binaryFolderName); if (!FolderUtils.CreateSymbolLinkOrCopyFolder(projectPublishFolder, applicationFolder)) { throw new PackagingException($"将发布输出文件拷贝到安装包打包文件夹失败,从 '{projectPublishFolder}' 复制到 '{applicationFolder}' 失败"); @@ -153,9 +161,7 @@ public void CreatePackagingFolder(DebUOSConfiguration configuration) { // 这里不能使用 Path.Join 方法,因为如果在 Windows 上进行打包,会将 \ 替换为 /,导致打包失败 //var exec = Path.Join("/opt/apps", appId, "files", "bin", configuration.AssemblyName); - var exec = configuration.ReplaceBinWithAppVersion - ? $"/opt/apps/{appId}/files/{configuration.UOSDebVersion}/{configuration.AssemblyName}" - : $"/opt/apps/{appId}/files/bin/{configuration.AssemblyName}"; + var exec = $"/opt/apps/{appId}/files/{binaryFolderName}/{configuration.AssemblyName}"; stringBuilder.Append($"Exec={exec}\n"); }