echo start: Get-Date -Format 'yyyy-MM-dd HH:mm:ss' echo 'delete dist folder' if(Test-Path dist) { Remove-Item ./dist/* -recurse -force } else { echo 'create dist folder' mkdir ./dist; } echo 'copy src to dist' Copy-Item ./src/* ./dist -recurse -Exclude @('.gitignore','start-dev.cmd','docker-compose.override.yml','nginx.development.conf') echo 'remove temp file in dist folder' Remove-Item ./dist/linux-x64/publish/docker/log/* -recurse -force Remove-Item ./dist/linux-x64/publish/docker/data/* -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/*.log -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/srs.pid -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/nginx/html/video/*.mp4 -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/nginx/html/live/*.png -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/nginx/html/live/*.m3u8 -recurse -force Remove-Item ./dist/linux-x64/publish/apps/srs/objs/nginx/html/live/*.ts -recurse -force echo 'copy project files to dist folder' Copy-Item ../projects/WebMVC/wwwroot/* ./dist/linux-x64/publish/apps/WebMVC/wwwroot -recurse Copy-Item ../projects/WebSPA/wwwroot/* ./dist/linux-x64/publish/apps/WebSPA/wwwroot -recurse dotnet publish ../projects/IoTCenter/IoTCenter.csproj -c Release -r linux-x64 -p:PublishSingleFile=true -o ../publish/dist/linux-x64/publish/apps/IoTCenter dotnet publish ../projects/IoTNode/IoTNode.csproj -c Release -r linux-arm64 -p:PublishSingleFile=true -o ../publish/dist/linux-arm64/publish/apps/IoTNode dotnet publish ../projects/IoTDameon/IoTDameon.csproj -c Release -r linux-arm64 -p:PublishSingleFile=true -o ../publish/dist/linux-arm64/publish/apps/IoTDameon $source=@" public class Encoding : System.Text.UTF8Encoding { public override byte[] GetBytes(string s) { s = s.Replace("\\", "/"); return base.GetBytes(s); } } "@ Add-Type -TypeDefinition $source $encoding=New-Object Encoding Add-Type -Assembly "System.IO.Compression.FileSystem" echo 'create zip file' $level = [System.IO.Compression.CompressionLevel]::Optimal [System.IO.Compression.ZipFile]::CreateFromDirectory((Get-Item .).FullName+"/dist/linux-arm64/publish", (Get-Item .).FullName+"/dist/linux-arm64/publish.zip",$level,$true,$encoding) [System.IO.Compression.ZipFile]::CreateFromDirectory((Get-Item .).FullName+"/dist/linux-arm64/publish/apps/IoTNode", (Get-Item .).FullName+"/dist/linux-arm64/IoTNode.zip",$level,$true,$encoding) $zip=(Get-Item .).FullName+"/dist/linux-arm64/IoTNode.zip" echo 'create xml file' $v= [System.Text.RegularExpressions.Regex]::Match((Get-Content "../projects/IoTNode/IoTNode.csproj"),'(.+)').Groups[1].Value $sha1 = New-Object System.Security.Cryptography.SHA1CryptoServiceProvider $checksum=[System.BitConverter]::ToString( $sha1.ComputeHash([System.IO.File]::ReadAllBytes($zip))).Replace('-','') $file = (Get-Item .).FullName+'/dist/linux-arm64/iotnode.xml' $xml = New-Object System.Xml.XmlDocument $xml.PreserveWhitespace = $true $xml.LoadXml(''+$v+''+$checksum+'') $xml.Save($file) echo end! Get-Date -Format 'yyyy-MM-dd HH:mm:ss' Read-Host -Prompt "Press any key to continue"