SetProcessAppUserModelId should not throw (#60)

This commit is contained in:
Caelan Sayler
2022-03-09 09:44:43 +00:00
parent 7aa7372ae3
commit 86d8efea03
2 changed files with 29 additions and 7 deletions

View File

@@ -190,15 +190,27 @@ namespace Squirrel
/// <inheritdoc/>
public void SetProcessAppUserModelId()
{
var releases = Utility.LoadLocalReleases(Utility.LocalReleaseFileForAppDir(AppDirectory));
var thisRelease = Utility.FindCurrentVersion(releases);
var zf = new ZipPackage(Path.Combine(
Utility.PackageDirectoryForAppDir(AppDirectory),
thisRelease.Filename));
if (_applicationIdOverride == null && !IsInstalledApp) {
// can't set model id if we don't know the package id.
return;
}
var exeName = Path.GetFileName(AssemblyRuntimeInfo.EntryExePath);
var appUserModelId = Utility.GetAppUserModelId(zf.Id, exeName);
string appUserModelId;
if (_applicationIdOverride != null) {
appUserModelId = Utility.GetAppUserModelId(_applicationIdOverride, exeName);
} else {
var releases = Utility.LoadLocalReleases(Utility.LocalReleaseFileForAppDir(AppDirectory));
var thisRelease = Utility.FindCurrentVersion(releases);
var zf = new ZipPackage(Path.Combine(
Utility.PackageDirectoryForAppDir(AppDirectory),
thisRelease.Filename));
appUserModelId = Utility.GetAppUserModelId(zf.Id, exeName);
}
NativeMethods.SetCurrentProcessExplicitAppUserModelID(appUserModelId);
}

View File

@@ -341,6 +341,16 @@ namespace Squirrel.Tests
Assert.False(fixture.IsInstalledApp);
}
[Fact]
public void SetModelIdDoesNotThrow()
{
using (var fixture = new UpdateManager(null))
fixture.SetProcessAppUserModelId();
using (var fixture2 = new UpdateManager(null, "TestASD"))
fixture2.SetProcessAppUserModelId();
}
[Theory]
[InlineData(0, 0, 25, 0)]
[InlineData(12, 0, 25, 3)]