Add release build configuration and MSI installer

- Configure self-contained, single-file release build
- Add version and company metadata to project
- Fix Assembly.Location for single-file compatibility (use AppContext.BaseDirectory)
- Add Resources folder copy to publish output
- Create WiX installer project with Product.wxs
- Configure auto-start via HKCU Run registry key
- Add build-release.ps1 PowerShell script for automated builds
- MSI installer installs to %LOCALAPPDATA%\DangerousThings\NFC Actions
- Creates Start Menu shortcut
- Automatically starts application on user login

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-06 23:21:14 -08:00
parent 5b6a7f0fa5
commit 37309f30e1
5 changed files with 277 additions and 4 deletions

View File

@@ -7,6 +7,21 @@
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms>
<ApplicationIcon>Resources\icon.ico</ApplicationIcon>
<Version>1.0.0</Version>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<Company>Dangerous Things</Company>
<Product>NFC Actions</Product>
<Description>NFC card reader monitoring and action automation</Description>
<Copyright>Copyright © 2025 Dangerous Things</Copyright>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<PublishReadyToRun>true</PublishReadyToRun>
<IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
</PropertyGroup>
<ItemGroup>
@@ -22,7 +37,18 @@
</ItemGroup>
<ItemGroup>
<None Include="Resources\icon.ico" CopyToOutputDirectory="PreserveNewest" />
<None Include="Resources\**\*">
<Link>Resources\%(RecursiveDir)%(Filename)%(Extension)</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</None>
</ItemGroup>
<Target Name="CopyResourcesOnPublish" AfterTargets="Publish">
<ItemGroup>
<ResourceFiles Include="$(ProjectDir)Resources\**\*" />
</ItemGroup>
<Copy SourceFiles="@(ResourceFiles)" DestinationFolder="$(PublishDir)Resources\%(RecursiveDir)" SkipUnchangedFiles="true" />
</Target>
</Project>

View File

@@ -21,9 +21,8 @@ public class LogService
{
_syncContext = SynchronizationContext.Current;
// Create log file in the same directory as the executable
var exePath = Assembly.GetExecutingAssembly().Location;
var exeDir = Path.GetDirectoryName(exePath) ?? Environment.CurrentDirectory;
// Create log file in the app directory (works for single-file publish)
var exeDir = AppContext.BaseDirectory;
var timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
_logFilePath = Path.Combine(exeDir, $"nfc-actions-debug-{timestamp}.log");