리크 테스트 gui
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
7.6 KiB

1 month ago
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
1 month ago
<TargetFramework>net9.0-windows</TargetFramework>
<Nullable>disable</Nullable>
<UseWPF>true</UseWPF>
<ImplicitUsings>enable</ImplicitUsings>
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
<Deterministic>true</Deterministic>
1 month ago
<PlatformTarget>x86</PlatformTarget>
<Platforms>AnyCPU;x86</Platforms>
<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
1 month ago
<!-- 단일 파일 배포 및 정제 설정 -->
<PublishSingleFile>true</PublishSingleFile>
<!-- SelfContained=true: 대상 PC의 .NET 런타임 설치 여부와 무관하게 실행 가능 -->
<SelfContained>true</SelfContained>
<!-- 네이티브 DLL들도 단일 EXE 안에 내장하여 추출 방식으로 처리 -->
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
<RuntimeIdentifier>win-x86</RuntimeIdentifier>
</PropertyGroup>
1 month ago
<ItemGroup>
1 month ago
<PackageReference Include="Microsoft.VisualStudio.Setup.Configuration.Interop" Version="3.14.2075">
<EmbedInteropTypes>true</EmbedInteropTypes>
</PackageReference>
<PackageReference Include="System.IO.Ports" Version="9.0.0" />
<PackageReference Include="Microsoft.Data.SqlClient" Version="5.2.2" />
</ItemGroup>
1 month ago
<ItemGroup>
1 month ago
<None Update="Database.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
1 month ago
<None Update="Sensor.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
1 month ago
<None Update="PCI-Dask.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="LoginOptions.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
1 month ago
1 month ago
<!-- 빌드 후 Native DLL을 libs 하위 폴더로 복사 (XCopy 플랫폼 의존성 배제) -->
<Target Name="CopyDllToLibs" AfterTargets="Build">
<ItemGroup>
<NativeDlls Include="$(TargetDir)PCI-Dask.dll" />
</ItemGroup>
<MakeDir Directories="$(TargetDir)libs" Condition="!Exists('$(TargetDir)libs')" />
<Copy SourceFiles="@(NativeDlls)" DestinationFolder="$(TargetDir)libs\" SkipUnchangedFiles="true" />
</Target>
<!-- Publish 단계 완료 후 Native DLL을 libs 하위 폴더로 복사 -->
<Target Name="CopyDllToPublish" AfterTargets="Publish">
<ItemGroup>
<PublishNativeDlls Include="$(MSBuildProjectDirectory)\PCI-Dask.dll" />
</ItemGroup>
<MakeDir Directories="$(PublishDir)libs" Condition="!Exists('$(PublishDir)libs')" />
<Copy SourceFiles="@(PublishNativeDlls)" DestinationFolder="$(PublishDir)libs\" SkipUnchangedFiles="true" />
</Target>
<!-- C:\LeakTest\ 설치 전용 Target (Publish에 의존하며, PublishDir로부터 복사 실행) -->
<Target Name="FolderPublish" DependsOnTargets="Publish" AfterTargets="Publish">
<PropertyGroup>
<DeployTargetFolder>C:\LeakTest\</DeployTargetFolder>
<PublishBackupDir>$(MSBuildProjectDirectory)\bin\Release\net9.0-windows\win-x86\publish_backup\</PublishBackupDir>
</PropertyGroup>
<Message Text="Deploying clean publish output to $(DeployTargetFolder)..." Importance="high" />
<!-- 기존 대상 디렉토리 클린업 및 재생성 (지저분한 기존 dll 파일들 소거) -->
<RemoveDir Directories="$(DeployTargetFolder)" />
<MakeDir Directories="$(DeployTargetFolder)" />
<MakeDir Directories="$(DeployTargetFolder)Logs" />
<!-- 실행 파일, 런타임 구성 파일 복사 -->
<Copy SourceFiles="$(PublishDir)leak_test_project.exe" DestinationFolder="$(DeployTargetFolder)" />
<Copy SourceFiles="$(TargetDir)leak_test_project.dll.config" DestinationFolder="$(DeployTargetFolder)" />
<!-- 설정 파일 복사 (프로젝트 소스에서 직접 이관) -->
<Copy SourceFiles="$(MSBuildProjectDirectory)\Database.ini" DestinationFolder="$(DeployTargetFolder)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\LoginOptions.json" DestinationFolder="$(DeployTargetFolder)" />
<Copy SourceFiles="$(MSBuildProjectDirectory)\Sensor.ini" DestinationFolder="$(DeployTargetFolder)" Condition="Exists('$(MSBuildProjectDirectory)\Sensor.ini')" />
<!-- Native DLLs 복사: [DllImport("PCI-Dask.dll")] 검색 경로는 EXE 실행 폴더(루트)이므로 루트에 배치 -->
<Copy SourceFiles="$(MSBuildProjectDirectory)\PCI-Dask.dll" DestinationFolder="$(DeployTargetFolder)" />
<Copy SourceFiles="$(TargetDir)Microsoft.Data.SqlClient.SNI.dll" DestinationFolder="$(DeployTargetFolder)" />
<!-- [WiX Toolset 단일 MSI 설치 파일 자동 빌드 스텝] -->
<Message Text="Compiling single installer MSI via WiX Toolset..." Importance="high" />
<Exec Command="wix build &quot;$(MSBuildProjectDirectory)\..\leak_test_project.Setup\Product.wxs&quot; -o &quot;$(DeployTargetFolder)LeakTestSetup.msi&quot;" WorkingDirectory="$(MSBuildProjectDirectory)" />
<!-- [WiX Toolset 단일 EXE 설치 파일 자동 빌드 스텝] -->
<Message Text="Compiling single installer EXE via WiX Toolset Bundle..." Importance="high" />
<Exec Command="wix build &quot;$(MSBuildProjectDirectory)\..\leak_test_project.Setup\Bundle.wxs&quot; -o &quot;$(DeployTargetFolder)LeakTestSetup.exe&quot; -ext WixToolset.BootstrapperApplications.wixext/5.0.2" WorkingDirectory="$(MSBuildProjectDirectory)" />
<!-- 빌드 중간 산출물 .wixpdb 및 MSI 파일 정리 (C:\LeakTest 폴더 깔끔화) -->
<Delete Files="$(DeployTargetFolder)LeakTestSetup.wixpdb" />
<Delete Files="$(DeployTargetFolder)LeakTestSetup.msi" />
<!-- 비주얼 스튜디오 게시 출력 폴더(PublishDir) 정화 작업 -->
<Message Text="Purging publish output directory and leaving only LeakTestSetup.exe..." Importance="high" />
<!-- 1. LeakTestSetup.exe 파일을 임시 대피 경로로 복사 -->
<RemoveDir Directories="$(PublishBackupDir)" />
<MakeDir Directories="$(PublishBackupDir)" />
<Copy SourceFiles="$(DeployTargetFolder)LeakTestSetup.exe" DestinationFolder="$(PublishBackupDir)" />
<!-- 2. 게시 폴더(PublishDir) 하위의 모든 자원 삭제 (dll, config, json, exe, libs 폴더 등) -->
<ItemGroup>
<FilesToClean Include="$(PublishDir)*.dll" />
<FilesToClean Include="$(PublishDir)*.exe" />
<FilesToClean Include="$(PublishDir)*.config" />
<FilesToClean Include="$(PublishDir)*.json" />
<FilesToClean Include="$(PublishDir)*.pdb" />
<FilesToClean Include="$(PublishDir)*.ini" />
</ItemGroup>
<Delete Files="@(FilesToClean)" />
<RemoveDir Directories="$(PublishDir)libs" />
<RemoveDir Directories="$(PublishDir)cs" />
<RemoveDir Directories="$(PublishDir)de" />
<RemoveDir Directories="$(PublishDir)es" />
<RemoveDir Directories="$(PublishDir)fr" />
<RemoveDir Directories="$(PublishDir)it" />
<RemoveDir Directories="$(PublishDir)ja" />
<RemoveDir Directories="$(PublishDir)ko" />
<RemoveDir Directories="$(PublishDir)pl" />
<RemoveDir Directories="$(PublishDir)pt-BR" />
<RemoveDir Directories="$(PublishDir)ru" />
<RemoveDir Directories="$(PublishDir)tr" />
<RemoveDir Directories="$(PublishDir)zh-Hans" />
<RemoveDir Directories="$(PublishDir)zh-Hant" />
<!-- 3. 대피시켰던 단일 설치 EXE 파일만 다시 게시 폴더(PublishDir)로 원복 이관 -->
<Copy SourceFiles="$(PublishBackupDir)LeakTestSetup.exe" DestinationFolder="$(PublishDir)" />
<!-- 4. 대피 임시 폴더 삭제 정리 -->
<RemoveDir Directories="$(PublishBackupDir)" />
<Message Text="Single Installer successfully compiled at both C:\LeakTest\LeakTestSetup.exe and $(PublishDir)LeakTestSetup.exe" Importance="high" />
</Target>
1 month ago
</Project>