Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
54b5fc4
Added information about projects and events to track creating and ope…
tombogle Dec 12, 2025
da7147c
Merge branch 'main' into analytics-tracking-enhancements
tombogle Dec 18, 2025
393b97b
Added an event to note details of significant progress.
tombogle Jan 6, 2026
bbdb5e1
Updated copyright to 2026
tombogle Jan 6, 2026
5768024
Fixed problems when stats are not fully initialized
tombogle Jan 6, 2026
edbca9f
Upgraded SIL.DesktopAnalytics
tombogle Jan 12, 2026
b3a4bf2
Merge branch 'main' into analytics-tracking-enhancements
tombogle Jan 12, 2026
016fab7
Unified on System.Text.Json 9.0.0 to prevent runtime failure:
tombogle Jan 13, 2026
c71c5fd
Improved installer to avoid picking up older DLL versions referenced …
tombogle Jan 13, 2026
ff5e863
Revert errant installer change
tombogle Jan 13, 2026
ba01181
Used locking to prevent race conditions in statistics reporting.
tombogle Jan 13, 2026
ede6694
Cleaned up some long-standing compiler warnings
tombogle Feb 26, 2026
7563c3b
Upgrade libpalaso SIL DLLs and L10nSharp to latest betas.
tombogle May 26, 2026
58a232f
Add ApplicationContainer.SayMoreLocalizationManager static property
tombogle Jun 5, 2026
04fc998
Replace lm-parameter EditorBase constructors with static-based no-arg…
tombogle Jun 5, 2026
f105fc4
Make ComponentFileGrid constructor no-arg, use SayMoreLocalizationMan…
tombogle Jun 8, 2026
5cbfb09
StatisticsView/ProgressScreen: remove ILocalizationManager param, use…
tombogle Jun 8, 2026
0df26dd
Fix indentation on null-conditional UiLanguageChanged guards in Stati…
tombogle Jun 8, 2026
104088d
Task 5: remove ILocalizationManager from FileType hierarchy
tombogle Jun 8, 2026
05e6a4d
Task 6: remove lm guard from HandleStringsLocalized in 7 EditorBase s…
tombogle Jun 8, 2026
870e9f7
Task 7: fix PersonBasicEditor — remove no-arg HandleStringsLocalized …
tombogle Jun 8, 2026
72ff644
Task 8: drop lm constructor param and clean up HandleStringsLocalized…
tombogle Jun 8, 2026
3a7dcdc
Task 9: remove ILocalizationManager from ProjectMetadataScreen and Pr…
tombogle Jun 8, 2026
cc5cb1d
Task 10: rewrite UILanguageDlg — remove ILocalizationManager, replace…
tombogle Jun 8, 2026
c3e4e92
Task 11a: fix two missed EditorBase subclasses (BasicFieldGridEditor,…
tombogle Jun 8, 2026
cb3ef52
Refactor: move HandleStringsLocalized initial call from EditorBase co…
tombogle Jun 9, 2026
39df720
Add superpowers/ to .gitignore
tombogle Jun 9, 2026
4d135fd
Cleanup: remove dead tabText constructor param and Initialize method …
tombogle Jun 9, 2026
928ad45
Fix: defer gender ComboBox selection until items are populated (crash…
tombogle Jun 10, 2026
a5d78b4
Merge branch 'main' into analytics-tracking-enhancements
tombogle Jun 25, 2026
66fa26d
Merge branch 'main' into analytics-tracking-enhancements
tombogle Jun 25, 2026
bc0d247
Fixed problem with unit tests when trying to select an invalid index …
tombogle Jun 25, 2026
1aa9d31
Updated to latest (beta) SIL DLLs
tombogle Jul 1, 2026
64ca462
Fixed CI build issues
tombogle Aug 13, 2026
f64f277
Replace hand-rolled installer analytics UI with SIL.Installer package
tombogle Aug 13, 2026
3eb7be6
Bump dorny/test-reporter to v3 to clear the Node.js 20 deprecation wa…
tombogle Aug 14, 2026
bb03ff6
Fix CI version computation: wire Version into env, auto-assign PR bui…
tombogle Aug 14, 2026
93e291c
Added missing file to installer
tombogle Aug 14, 2026
7ac5240
Moved instantiation of AnalyticsConsent out of release-only code bloc…
tombogle Aug 17, 2026
379f48b
Dealt with PR review issues:
tombogle Aug 18, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 17 additions & 12 deletions .github/workflows/build-test-installer-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,36 +49,41 @@ jobs:
Version="${GITHUB_REF#refs/tags/}"
Version="${Version#v}"
echo "version=$Version" >> $GITHUB_OUTPUT
echo "Version=$Version" >> $GITHUB_ENV
echo "detected tag push: $Version"
exit 0
fi

# Otherwise find the latest tag that starts with v
# Otherwise, this is a non-release build (PR, branch push, workflow_dispatch). Give it a version that
# sorts well above any real release so testers/updaters never mistake it for one: same major.minor as
# the last release, but with a patch number at least 1000 higher, growing with every commit since that
# release so successive test builds are still ordered correctly relative to each other.
LAST_TAG=$(git describe --tags --match "v*" --abbrev=0 2>/dev/null || echo "")

# Compute a build number based on number of commits since that tag
if [[ -n "$LAST_TAG" ]]; then
# Tag found, count commits since that tag
BASE_VERSION="${LAST_TAG#v}"
MAJOR_MINOR="${BASE_VERSION%.*}"
LAST_PATCH="${BASE_VERSION##*.}"
COMMITS_SINCE_TAG=$(git rev-list ${LAST_TAG}..HEAD --count)
# Final version: X.Y.Z.build
Version="${LAST_TAG#v}.${COMMITS_SINCE_TAG}"
Version="${MAJOR_MINOR}.$((LAST_PATCH + 1000 + COMMITS_SINCE_TAG))"
else
# No tag found, use 0.0.0 and count all commits
# No release tag exists at all; fall back to counting all commits.
COMMITS_SINCE_TAG=$(git rev-list HEAD --count)
Version="0.0.0.${COMMITS_SINCE_TAG}"
Version="0.0.$((1000 + COMMITS_SINCE_TAG))"
fi

echo "version=$Version" >> $GITHUB_OUTPUT
echo "Version=$Version" >> $GITHUB_ENV
echo "no tag push; using $Version"

- name: Setup NuGet
uses: NuGet/setup-nuget@v2
uses: NuGet/setup-nuget@v4

- name: Restore NuGet packages
run: nuget restore SayMore.sln

- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
uses: microsoft/setup-msbuild@v3

- name: Build
run: msbuild build\SayMore.proj /t:Build /p:Configuration=$env:Configuration /p:Version=$env:Version /m
Expand All @@ -88,7 +93,7 @@ jobs:

- name: Upload test results
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: saymore-test-results
if-no-files-found: warn
Expand All @@ -109,7 +114,7 @@ jobs:
files-folder-filter: SayMoreInstaller*.msi

- name: Upload installer artifacts
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: saymore-installer
if-no-files-found: error
Expand Down Expand Up @@ -137,7 +142,7 @@ jobs:
needs: build_test
runs-on: ubuntu-latest
steps:
- uses: dorny/test-reporter@v2
- uses: dorny/test-reporter@v3
with:
artifact: saymore-test-results
name: NUnit Tests
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
superpowers/**
obj/
**/output/**
**/bin/**
Expand Down Expand Up @@ -55,3 +56,4 @@ packages/*
build/SIL.BuildTasks.*
IMDI_3_0_Fix.py
icu4c.readme.txt
/.claude/*.local.json
17 changes: 17 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# CLAUDE.md

Guidance for Claude Code when working in this repository.

## `docs/` is a git submodule

`docs/` is a separate git repository (`sillsdev/saymore-doc`) checked out as a submodule. Do not create or edit files there. Notes, specs, and other Claude-authored working documents belong in `superpowers/` instead.

## Installer analytics consent

The Windows installer's analytics opt-in/opt-out UI (`PrivacyDlg`, registry read/write, dialog navigation) comes entirely from the `SIL.Installer` NuGet package (`src/Installer/Installer.wixproj`), not from custom code in this repo. `src/Installer/Installer.wxs` only references it via `<ComponentGroupRef Id="SilAnalyticsComponents" />`. See `superpowers/specs/2026-07-02-saymore-analytics-installer-design.md` for the design rationale.

## Keeping SIL package versions in sync

`SIL.libpalaso.l10ns` is referenced in `src/SayMore/SayMore.csproj` and again indirectly in `build/SayMore.proj` (which locates the restored package's `.xlf` content files). `build/SayMore.proj`'s `ResolvePalasoL10nsVersion` target reads the version straight from the csproj's `PackageReference` via `XmlPeek`, so it can't drift out of sync — don't reintroduce a hardcoded version there.

The other `SIL.*` packages (`SIL.Core`, `SIL.Archiving`, `SIL.Media`, `SIL.Windows.Forms*`, `SIL.WritingSystems`, `SIL.Installer`) are released together from the `libpalaso` monorepo and should be bumped together to the same version — mixing betas from that family risks assembly mismatches.
4 changes: 2 additions & 2 deletions DistFiles/SayMore.es.xlf
Original file line number Diff line number Diff line change
Expand Up @@ -3609,12 +3609,12 @@
</trans-unit>
<trans-unit id="PeopleView.MetadataEditor.GenderSelector.Female" approved="yes">
<source xml:lang="en">Female</source>
<target xml:lang="es-ES" state="final">Hembra</target>
<target xml:lang="es-ES" state="final">Feminina</target>
<note>ID: PeopleView.MetadataEditor.GenderSelector.Female</note>
</trans-unit>
<trans-unit id="PeopleView.MetadataEditor.GenderSelector.Male" approved="yes">
<source xml:lang="en">Male</source>
<target xml:lang="es-ES" state="final">Macho</target>
<target xml:lang="es-ES" state="final">Masculino</target>
<note>ID: PeopleView.MetadataEditor.GenderSelector.Male</note>
</trans-unit>
<trans-unit id="PeopleView.MetadataEditor.ImageFileTypes" approved="yes">
Expand Down
2 changes: 1 addition & 1 deletion DistFiles/aboutBox.htm
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ <h1>Thanks</h1>
<p>Sarah Moeller, Tim Gaved, Cambell Prince, Michael Cochran, Gary Simons, John Wickberg, Will Reiman (SIL Global)</p>
<p>Microsoft for <a href="https://github.com/">Github</a>, the repository where our open-source code is hosted for free, and also for free use of <a href="https://visualstudio.microsoft.com/vs/community/">Visual Studio Community</a>, our preferred IDE.</p>
<p>Atlassian, for a free open-source license for <a href="https://www.atlassian.com/software/jira/overview">Jira</a>, where we keep bug reports.</p>

<p><a href="https://crowdin.com/">Crowdin</a>, for great on-line localization tools.</p>
<p><a href="https://github.com/sillsdev/saymore/">GitHub</a>, for free hosting of our source code repository.</p>

<h1>Open Source Components/Libraries</h1>
Expand Down
Binary file modified DistFiles/license.rtf
Binary file not shown.
1 change: 1 addition & 0 deletions DistFiles/releaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
## _VERSION_ (_DATE_)
* SayMore is now a 64-bit application, so it will make better use of available memory and avoid out-of-memory errors.
* SayMore now targets .Net Framework 4.8, which is the latest version supported on Windows 7 through Windows 11. It will not run on Windows versions earlier than 7.
* Added ability (both in the installer and in a dialog inside SayMore) to opt out of sending analytics data to SIL.

## 3.7.4 (30 July 2025)
* Small improvement in the logic to guess at the correct initial writing system for translations when exporting FLEx Interlinear files (flextext).
Expand Down
5 changes: 5 additions & 0 deletions SayMore.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HTML/@EntryIndexedValue">HTML</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IE/@EntryIndexedValue">IE</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IMDI/@EntryIndexedValue">IMDI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ISO/@EntryIndexedValue">ISO</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MRU/@EntryIndexedValue">MRU</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OK/@EntryIndexedValue">OK</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RAMP/@EntryIndexedValue">RAMP</s:String>
Expand All @@ -12,6 +14,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=attrib/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=autofac/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=autonym/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Bkgnd/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=bldr/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=contribs/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=curr/@EntryIndexedValue">True</s:Boolean>
Expand All @@ -25,6 +28,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Inputter/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Insite/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Jira/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=localizer/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=malware/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mets/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=NTSC/@EntryIndexedValue">True</s:Boolean>
Expand All @@ -37,6 +41,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=reentrant/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Resegment/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=romanized/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Saveable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Segmenter/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Segoe/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=standarderror/@EntryIndexedValue">True</s:Boolean>
Expand Down
28 changes: 24 additions & 4 deletions build/SayMore.proj
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,8 @@
<BuildOutputDir>$(OutputRootDir)x64\$(Configuration)\net48\</BuildOutputDir>
<NuGetPackageRoot Condition="'$(NuGetPackageRoot)'==''">$(USERPROFILE)\.nuget\packages\</NuGetPackageRoot>
<LocalPackagesRoot Condition="'$(LocalPackagesRoot)'==''">$(RootDir)/packages/</LocalPackagesRoot>
<PalasoL10nsVersion>16.2.0</PalasoL10nsVersion>
<PalasoL10nsRootDir>$(NuGetPackageRoot)SIL.libpalaso.l10ns/$(PalasoL10nsVersion)/</PalasoL10nsRootDir>
<SILReleaseTasksProps>$(NuGetPackageRoot)SIL.ReleaseTasks/3.1.1/build/SIL.ReleaseTasks.props</SILReleaseTasksProps>
<SayMoreCsproj>$(RootDir)\src\SayMore\SayMore.csproj</SayMoreCsproj>
<SILReleaseTasksProps>$(NuGetPackageRoot)SIL.ReleaseTasks/3.2.0/build/SIL.ReleaseTasks.props</SILReleaseTasksProps>
<BuildTasksVersionFolder Condition="'$(BuildTasksVersionFolder)' == ''">$(LocalPackagesRoot)SIL.BuildTasks/</BuildTasksVersionFolder>
<BuildTasksDll>$(BuildTasksVersionFolder)tools/SIL.BuildTasks.dll</BuildTasksDll>
<SILBuildTasksProps>$(BuildTasksVersionFolder)build/SIL.BuildTasks.props</SILBuildTasksProps>
Expand Down Expand Up @@ -154,6 +153,12 @@

<Message Text="Making Installer Version: $(Version)" Importance="high" />

<!-- Installer.wixproj uses PackageReference (for SIL.Installer), which requires an explicit restore before the WiX build.
This must run as a separate process (not a nested MSBuild Restore-target call): MSBuild caches the evaluated
project instance per node, so a nested call would build against the pre-restore evaluation and silently
miss the Analytics.wxs/AnalyticsNavigation.wxs items that restore adds via SIL.Installer.targets. -->
<Exec Command="dotnet restore &quot;$(RootDir)\src\Installer\Installer.wixproj&quot;" />

<MSBuild
Projects="$(RootDir)\src\Installer\Installer.wixproj"
Properties="Configuration=$(Configuration)"
Expand Down Expand Up @@ -194,7 +199,22 @@
<Delete Files="$(InstallerOutputDir)SayMoreInstaller.msi" TreatErrorsAsWarnings="false" />
</Target>

<Target Name="copyLibL10ns">
<Target Name="ResolvePalasoL10nsVersion">
<!-- Read the version from SayMore.csproj's PackageReference so it can't drift out of sync with what NuGet actually restores. -->
<XmlPeek XmlInputPath="$(SayMoreCsproj)"
Query="//PackageReference[@Include='SIL.libpalaso.l10ns']/@Version">
<Output TaskParameter="Result" ItemName="_PalasoL10nsVersionResult" />
</XmlPeek>
<PropertyGroup>
<PalasoL10nsVersion>@(_PalasoL10nsVersionResult)</PalasoL10nsVersion>
<PalasoL10nsRootDir>$(NuGetPackageRoot)SIL.libpalaso.l10ns/$(PalasoL10nsVersion)/</PalasoL10nsRootDir>
</PropertyGroup>
<Message Text="Resolved SIL.libpalaso.l10ns version $(PalasoL10nsVersion) from $(SayMoreCsproj); expecting package at $(PalasoL10nsRootDir)" Importance="high" />
<Error Text="Could not find a SIL.libpalaso.l10ns PackageReference version in $(SayMoreCsproj)"
Condition="'$(PalasoL10nsVersion)' == ''" />
</Target>

<Target Name="copyLibL10ns" DependsOnTargets="ResolvePalasoL10nsVersion">
<Error Text="Palaso L10ns package missing. Expected at $(PalasoL10nsRootDir)"
Condition="!Exists('$(PalasoL10nsRootDir)/SIL.libpalaso.l10ns.$(PalasoL10nsVersion).nupkg')" />
<ItemGroup>
Expand Down
20 changes: 19 additions & 1 deletion build/TestInstallerBuild.bat
Original file line number Diff line number Diff line change
@@ -1,10 +1,28 @@
pushd .\
FOR /F "tokens=*" %%i IN ('"C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe" -latest -requires Microsoft.Component.MSBuild -find MSBuild\**\Bin\MSBuild.exe') DO SET msbuildexe="%%i"

REM Remember which build-modified files are currently clean so we can restore them afterwards.
REM Files with pre-existing unstaged changes are left alone.
SET REVERT_FILES=
git diff --quiet -- ..\DistFiles\releaseNotes.md
IF NOT ERRORLEVEL 1 SET REVERT_FILES=%REVERT_FILES% ../DistFiles/releaseNotes.md
git diff --quiet -- ..\src\Installer\Installer.wxs
IF NOT ERRORLEVEL 1 SET REVERT_FILES=%REVERT_FILES% ../src/Installer/Installer.wxs
git diff --quiet -- ..\src\AutoSegmenter\Properties\AssemblyInfo.cs
IF NOT ERRORLEVEL 1 SET REVERT_FILES=%REVERT_FILES% ../src/AutoSegmenter/Properties/AssemblyInfo.cs
git diff --quiet -- ..\src\SayMore\Properties\AssemblyInfo.cs
IF NOT ERRORLEVEL 1 SET REVERT_FILES=%REVERT_FILES% ../src/SayMore/Properties/AssemblyInfo.cs
git diff --quiet -- ..\src\SayMoreTests\Properties\AssemblyInfo.cs
IF NOT ERRORLEVEL 1 SET REVERT_FILES=%REVERT_FILES% ../src/SayMoreTests/Properties/AssemblyInfo.cs

dotnet restore ..\SayMore.sln
%msbuildexe% /target:Build /verbosity:detailed
%msbuildexe% /target:ConvertReleaseNotesToHtml;installer /property:Version=3.8.2000 /verbosity:detailed

IF DEFINED REVERT_FILES git checkout -- %REVERT_FILES%

popd
GOTO pauseforusertoseeoutput
:pauseforusertoseeoutput
ECHO %CMDCMDLINE% | findstr /i "/c" >nul
ECHO %CMDCMDLINE% | findstr /i /c:"/c" >nul
IF NOT errorlevel 1 PAUSE
16 changes: 15 additions & 1 deletion src/Installer/Installer.wixproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<!-- Wix.targets (imported below) doesn't pull in Microsoft.Common.targets like a normal project, so without this
import, NuGet's PackageReference restore hooks (needed for the SIL.Installer package) never get wired up. -->
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration>
<OutputPath>..\..\output\installer\</OutputPath>
Expand All @@ -7,11 +10,16 @@
<ProjectGuid>{be2c52bc-6b66-4f8b-8b50-2cba58a8027d}</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>SayMoreInstaller</OutputName>
<!-- Set explicitly: importing Microsoft.Common.targets (below, needed for PackageReference restore) defaults
TargetName to the project file name ("Installer") before Wix.targets gets a chance to fall back to OutputName. -->
<TargetName>$(OutputName)</TargetName>
<OutputType>Package</OutputType>
<DefineSolutionProperties>false</DefineSolutionProperties>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<DefineConstants>ProductName=SayMore</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<DefineConstants>Debug</DefineConstants>
<DefineConstants>Debug;ProductName=SayMore</DefineConstants>
<AllowIdenticalRows>False</AllowIdenticalRows>
<CabinetCachePath>
</CabinetCachePath>
Expand Down Expand Up @@ -57,6 +65,9 @@
<Compile Include="Installer.wxs" />
<Compile Include="..\..\output\installer\GeneratedDistFiles.wxs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="SIL.Installer" Version="18.0.0-beta0032" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixUtilExtension">
<HintPath>C:\Program Files\Windows Installer XML v3.9\bin\WixUtilExtension.dll</HintPath>
Expand All @@ -68,5 +79,8 @@
<HintPath>C:\Program Files\Windows Installer XML v3.9\bin\WixUIExtension.dll</HintPath>
</WixExtension>
</ItemGroup>
<!-- Provides the NuGet PackageReference restore targets; imported before Wix.targets so Wix.targets' own
Build/Clean target definitions (which follow) take precedence over Common.targets' generic ones. -->
<Import Project="$(MSBuildToolsPath)\Microsoft.Common.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets" />
</Project>
Loading