mirror of
https://github.com/babalae/better-genshin-impact
synced 2025-01-07 03:17:16 +08:00
upgrade build ps1
在 `upload_1_build_dist.cmd` 文件中: - 添加了切换到当前脚本目录的命令 `cd /d %~dp0`。 - 添加了删除 `dist` 目录及其子目录的命令 `if exist dist rd /s /q dist`。 - 添加了创建 `dist\BetterGI` 目录的命令 `mkdir dist\BetterGI`。 - 添加了准备编译器的命令,使用 `vswhere.exe` 查找最新的 Visual Studio 安装路径并设置环境变量。 - 添加了准备版本信息的命令,使用 PowerShell 从 `BetterGenshinImpact.csproj` 文件中提取 `AssemblyVersion`。 - 添加了设置临时文件夹和归档文件名的命令。 - 添加了使用 Visual Studio 2022 构建应用程序的命令。 - 添加了使用 7z 打包应用程序的命令。 - 添加了删除特定文件(如 `.lib` 和 `ffmpeg` DLL 文件)的命令。 - 添加了从特定路径复制文件到临时文件夹的命令。 - 添加了暂停命令 `@pause`。 在 `upload_2_zip_dist.ps1` 文件中: - 添加了导入 `Microsoft.PowerShell.Archive` 模块的命令。 - 添加了设置目录路径、输出 JSON 路径和目标目录路径的命令。 - 添加了将相对路径转换为绝对路径的命令。 - 添加了初始化排除目录列表的命令。 - 添加了初始化一个空的哈希表来存储文件路径和哈希值的命令。 - 添加了获取目录中所有文件的命令。 - 添加了遍历文件列表并计算每个文件的 SHA256 哈希值的命令。 - 添加了将文件路径和哈希值添加到哈希表中的命令。 - 添加了压缩文件并替换原文件的命令。 - 添加了将哈希表转换为 JSON 格式并写入文件的命令。 - 添加了获取所有 `.zip` 文件并复制到目标目录的命令。 - 添加了删除原始目录的命令。
This commit is contained in:
parent
1901246bab
commit
c89e2d4e84
39
Build/upload_1_build_dist.cmd
Normal file
39
Build/upload_1_build_dist.cmd
Normal file
@ -0,0 +1,39 @@
|
||||
cd /d %~dp0
|
||||
if exist dist rd /s /q dist
|
||||
mkdir dist\BetterGI
|
||||
|
||||
@echo [prepare compiler]
|
||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -property installationPath`) do set "path=%path%;%%i\MSBuild\Current\Bin;%%i\Common7\IDE"
|
||||
|
||||
@echo [prepare version]
|
||||
cd /d ..\BetterGenshinImpact
|
||||
set "script=Get-Content 'BetterGenshinImpact.csproj' | Select-String -Pattern 'AssemblyVersion\>(.*)\<\/AssemblyVersion' | ForEach-Object { $_.Matches.Groups[1].Value }"
|
||||
for /f "usebackq delims=" %%i in (`powershell -NoLogo -NoProfile -Command "%script%"`) do set version=%%i
|
||||
echo current version is %version%
|
||||
if "%b%"=="" ( set "b=%version%" )
|
||||
|
||||
set "tmpfolder=%~dp0dist\BetterGI"
|
||||
set "archiveFile=BetterGI_v%b%.7z"
|
||||
set "setupFile=BetterGI_Setup_v%b%.exe"
|
||||
|
||||
echo [build app using vs2022]
|
||||
cd /d %~dp0
|
||||
rd /s /q ..\BetterGenshinImpact\bin\x64\Release\net8.0-windows10.0.22621.0\publish\win-x64\
|
||||
cd ..\
|
||||
dotnet publish -c Release -p:PublishProfile=FolderProfile
|
||||
|
||||
echo [pack app using 7z]
|
||||
cd /d %~dp0
|
||||
cd /d ..\BetterGenshinImpact\bin\x64\Release\net8.0-windows10.0.22621.0\publish\win-x64\
|
||||
xcopy * "%tmpfolder%" /E /C /I /Y
|
||||
cd /d %~dp0
|
||||
del /f /q %tmpfolder%\*.lib
|
||||
del /f /q %tmpfolder%\*ffmpeg*.dll
|
||||
|
||||
:: 添加一些配置文件开始(大文件不适合放在Github)
|
||||
if exist "E:\HuiTask\BetterGIBuild\BetterGI" (
|
||||
xcopy "E:\HuiTask\BetterGIBuild\BetterGI\*" "%tmpfolder%" /E /C /I /Y
|
||||
)
|
||||
:: 添加一些配置文件结束
|
||||
|
||||
@pause
|
92
Build/upload_2_zip_dist.ps1
Normal file
92
Build/upload_2_zip_dist.ps1
Normal file
@ -0,0 +1,92 @@
|
||||
# 导入必要的模块
|
||||
Import-Module -Name Microsoft.PowerShell.Archive
|
||||
|
||||
# 定义目录路径
|
||||
$directoryPath = ".\dist\BetterGI"
|
||||
$outputJsonPath = "E:\HuiTask\BetterGIBuild\UploadGit\bettergi-installation-data\hash.json"
|
||||
$destinationDir = "E:\HuiTask\BetterGIBuild\UploadGit\bettergi-installation-data\installation"
|
||||
|
||||
# 将相对路径转换为绝对路径
|
||||
$absoluteDirectoryPath = (Resolve-Path -Path $directoryPath).Path
|
||||
|
||||
# 定义要跳过的目录
|
||||
$excludedDirectories = @(
|
||||
".\dist\BetterGI\Script",
|
||||
".\dist\BetterGI\User"
|
||||
)
|
||||
# 将相对路径转换为绝对路径
|
||||
$excludedDirectories = $excludedDirectories | ForEach-Object { (Resolve-Path -Path $_).Path }
|
||||
|
||||
# 初始化一个空的哈希表来存储文件路径和哈希值
|
||||
$fileHashes = @{}
|
||||
|
||||
# 获取目录下的所有文件,包括子目录
|
||||
$files = Get-ChildItem -Path $directoryPath -Recurse -File
|
||||
|
||||
foreach ($file in $files) {
|
||||
# 跳过已经是 .zip 的文件
|
||||
if ($file.Extension -eq ".zip") {
|
||||
continue
|
||||
}
|
||||
# 检查文件是否在要跳过的目录中
|
||||
$skipFile = $false
|
||||
foreach ($excludedDir in $excludedDirectories) {
|
||||
if ($file.FullName.StartsWith($excludedDir)) {
|
||||
$skipFile = $true
|
||||
break
|
||||
}
|
||||
}
|
||||
if ($skipFile) {
|
||||
Write-Host "Skipping file in excluded directory: $($file.FullName)"
|
||||
continue
|
||||
}
|
||||
|
||||
# 计算文件的哈希值
|
||||
$hash = Get-FileHash -Path $file.FullName -Algorithm SHA256
|
||||
|
||||
# 检查哈希值是否为空
|
||||
if ($null -eq $hash) {
|
||||
Write-Host "Failed to compute hash for file: $($file.FullName)"
|
||||
continue
|
||||
}
|
||||
|
||||
# 计算相对路径
|
||||
$relativePath = $file.FullName.Replace($absoluteDirectoryPath, "").TrimStart("\\")
|
||||
|
||||
# 将相对路径和哈希值添加到哈希表中
|
||||
$fileHashes[$relativePath] = $hash.Hash
|
||||
|
||||
# 定义压缩文件的路径
|
||||
$zipFilePath = "$($file.FullName).zip"
|
||||
|
||||
# 压缩文件并替换同名压缩文件
|
||||
Compress-Archive -Path $file.FullName -DestinationPath $zipFilePath -Force
|
||||
}
|
||||
|
||||
# 将哈希表转换为 JSON 格式
|
||||
$jsonContent = $fileHashes | ConvertTo-Json -Depth 10
|
||||
|
||||
# 使用 UTF-8 编码写入 JSON 文件
|
||||
[System.IO.File]::WriteAllText($outputJsonPath, $jsonContent, [System.Text.Encoding]::UTF8)
|
||||
|
||||
|
||||
|
||||
# 获取所有 .zip 文件,包括子目录
|
||||
$zipFiles = Get-ChildItem -Path $absoluteDirectoryPath -Recurse -Filter *.zip
|
||||
|
||||
foreach ($file in $zipFiles) {
|
||||
# 计算目标路径
|
||||
$relativePath = $file.FullName.Substring($absoluteDirectoryPath.Length)
|
||||
$destinationPath = Join-Path $destinationDir $relativePath
|
||||
|
||||
# 创建目标目录
|
||||
$destinationDirPath = Split-Path $destinationPath
|
||||
if (-not (Test-Path $destinationDirPath)) {
|
||||
New-Item -ItemType Directory -Path $destinationDirPath -Force
|
||||
}
|
||||
|
||||
# 拷贝文件
|
||||
Copy-Item -Path $file.FullName -Destination $destinationPath -Force
|
||||
}
|
||||
|
||||
Remove-Item -Path $absoluteDirectoryPath -Recurse -Force
|
Loading…
Reference in New Issue
Block a user