Fixed UplayGame monitoring

Also fixed errors caused by trying to access
32bit processes information from 64-bit
processes by using smoe cool code thanks
to Jeff Mercado and Mike Fuchs:
https://stackoverflow.com/questions/9501771/how-to-avoid-a-win32-exception-when-accessing-process-mainmodule-filename-in-c
This commit is contained in:
Terry MacDonald 2020-12-28 21:34:59 +13:00
parent c7a1f1ab55
commit ed167459fa
15 changed files with 224 additions and 223 deletions

View File

@ -79,6 +79,7 @@
<Reference Include="System.Core" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Management" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.XML" />
@ -90,6 +91,7 @@
<Compile Include="DesktopNotificationActivator.cs" />
<Compile Include="DesktopNotificationManagerCompat.cs" />
<Compile Include="GameLibraries\Game.cs" />
<Compile Include="GameLibraries\GameUtils.cs" />
<Compile Include="GameLibraries\SteamAppInfoParser\AppInfo.cs" />
<Compile Include="GameLibraries\SteamAppInfoParser\EUniverse.cs" />
<Compile Include="GameLibraries\SteamAppInfoParser\Package.cs" />

View File

@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Management;
namespace DisplayMagician.GameLibraries
{
class GameUtils
{
public static string GetMainModuleFilepath(int processId)
{
string wmiQueryString = "SELECT ProcessId, ExecutablePath FROM Win32_Process WHERE ProcessId = " + processId;
using (var searcher = new ManagementObjectSearcher(wmiQueryString))
{
using (var results = searcher.Get())
{
ManagementObject mo = results.Cast<ManagementObject>().FirstOrDefault();
if (mo != null)
{
return (string)mo["ExecutablePath"];
}
}
}
return null;
}
}
}

View File

@ -83,8 +83,16 @@ namespace DisplayMagician.GameLibraries
List<Process> gameProcesses = Process.GetProcessesByName(_steamGameProcessName).ToList();
foreach (Process gameProcess in gameProcesses)
{
if (gameProcess.MainModule.FileName.StartsWith(_steamGameExePath))
numGameProcesses++;
try
{
if (gameProcess.MainModule.FileName.StartsWith(_steamGameExePath))
numGameProcesses++;
}
catch (Exception ex)
{
if (GameUtils.GetMainModuleFilepath(gameProcess.Id).StartsWith(_steamGameExePath))
numGameProcesses++;
}
}
if (numGameProcesses > 0)
return true;

View File

@ -84,8 +84,16 @@ namespace DisplayMagician.GameLibraries
List<Process> gameProcesses = Process.GetProcessesByName(_uplayGameProcessName).ToList();
foreach (Process gameProcess in gameProcesses)
{
if (gameProcess.MainModule.FileName.StartsWith(_uplayGameExePath))
numGameProcesses++;
try
{
if (gameProcess.MainModule.FileName.StartsWith(_uplayGameExePath))
numGameProcesses++;
}
catch (Exception ex)
{
if (GameUtils.GetMainModuleFilepath(gameProcess.Id).StartsWith(_uplayGameExePath))
numGameProcesses++;
}
}
if (numGameProcesses > 0)
return true;

View File

@ -37,8 +37,8 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.2.0.*")]
[assembly: AssemblyFileVersion("0.2.0.0")]
[assembly: AssemblyVersion("0.2.1.*")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: NeutralResourcesLanguage("en")]
[assembly: CLSCompliant(true)]

View File

@ -661,7 +661,7 @@ namespace DisplayMagician
// Construct the Windows toast content
ToastContentBuilder tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=runningApplication", ToastActivationType.Foreground)
.AddText($"Running {processNameToLookFor} Shortcut", hintMaxLines: 1)
.AddText($"Running {processNameToLookFor}", hintMaxLines: 1)
.AddText($"Waiting for all {processNameToLookFor} windows to exit...");
//.AddButton("Stop", ToastActivationType.Background, "notify=runningGame&action=stop");
ToastContent toastContent = tcBuilder.Content;
@ -699,6 +699,23 @@ namespace DisplayMagician
Console.WriteLine($"{processNameToLookFor} has exited.");
logger.Debug($"ShortcutRepository/RunShortcut - Application {processNameToLookFor} has exited.");
// Tell the user that the application has closed
// Construct the toast content
tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=stopDetected", ToastActivationType.Foreground)
.AddText($"{processNameToLookFor} was closed", hintMaxLines: 1)
.AddText($"All {processNameToLookFor} processes were shutdown and changes were reverted.");
toastContent = tcBuilder.Content;
// Make sure to use Windows.Data.Xml.Dom
doc = new XmlDocument();
doc.LoadXml(toastContent.GetContent());
// And create the toast notification
toast = new ToastNotification(doc);
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// And then show it
DesktopNotifications.DesktopNotificationManagerCompat.CreateToastNotifier().Show(toast);
}
else if (shortcutToUse.Category.Equals(ShortcutCategory.Game))
@ -759,7 +776,7 @@ namespace DisplayMagician
// Construct the Windows toast content
ToastContentBuilder tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=runningSteamGame", ToastActivationType.Foreground)
.AddText($"Running {shortcutToUse.GameName} Shortcut", hintMaxLines: 1)
.AddText($"Running {shortcutToUse.GameName}", hintMaxLines: 1)
.AddText($"Waiting for the Steam Game {shortcutToUse.GameName} to exit...");
//.AddButton("Stop", ToastActivationType.Background, "notify=runningGame&action=stop");
ToastContent toastContent = tcBuilder.Content;
@ -791,6 +808,24 @@ namespace DisplayMagician
Console.WriteLine($"{steamGameToRun.Name} has exited.");
logger.Debug($"ShortcutRepository/RunShortcut - Steam Game {steamGameToRun.Name} has exited.");
// Tell the user that the Steam Game has closed
// Construct the toast content
tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=stopDetected", ToastActivationType.Foreground)
.AddText($"{shortcutToUse.GameName} was closed", hintMaxLines: 1)
.AddText($"{shortcutToUse.GameName} game was shutdown and changes were reverted.");
toastContent = tcBuilder.Content;
// Make sure to use Windows.Data.Xml.Dom
doc = new XmlDocument();
doc.LoadXml(toastContent.GetContent());
// And create the toast notification
toast = new ToastNotification(doc);
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// And then show it
DesktopNotifications.DesktopNotificationManagerCompat.CreateToastNotifier().Show(toast);
}
}
@ -816,11 +851,56 @@ namespace DisplayMagician
address += "/0";
}
// Now we want to tell the user we're starting upc.exe
// Construct the Windows toast content
ToastContentBuilder tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=startingUplay", ToastActivationType.Foreground)
.AddText($"Starting Uplay", hintMaxLines: 1)
.AddText($"Waiting for Uplay to start (and update if needed)...");
//.AddButton("Stop", ToastActivationType.Background, "notify=runningGame&action=stop");
ToastContent toastContent = tcBuilder.Content;
// Make sure to use Windows.Data.Xml.Dom
var doc = new XmlDocument();
doc.LoadXml(toastContent.GetContent());
// And create the toast notification
var toast = new ToastNotification(doc);
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// And then show this notification
DesktopNotifications.DesktopNotificationManagerCompat.CreateToastNotifier().Show(toast);
// Start the URI Handler to run Uplay
Console.WriteLine($"Starting Uplay Game: {uplayGameToRun.Name}");
var uplayProcess = Process.Start(address);
Process uplayStartProcess = Process.Start(address);
// Wait for Uplay game to update if needed
// Wait for Uplay to start
List<Process> uplayProcesses = null;
for (int secs = 0; secs >= (shortcutToUse.StartTimeout * 1000); secs += 500)
{
// Look for the processes with the ProcessName we sorted out earlier
uplayProcesses = Process.GetProcessesByName("upc").ToList();
// If we have found one or more processes then we should be good to go
// so let's break
if (uplayProcesses.Count > 0)
{
logger.Debug($"Found {uplayProcesses.Count} 'upc' processes have started");
break;
}
// Let's wait a little while if we couldn't find
// any processes yet
Thread.Sleep(500);
}
// Delay 5secs
Thread.Sleep(5000);
// Now we know the Uplay app is running then
// we wait until the Uplay game is running (*allows for uplay update)
for (int secs = 0; secs >= (shortcutToUse.StartTimeout * 1000); secs += 500)
{
@ -836,7 +916,7 @@ namespace DisplayMagician
}
// Store the Uplay Process ID for later
IPCService.GetInstance().HoldProcessId = uplayProcess?.Id ?? 0;
IPCService.GetInstance().HoldProcessId = uplayStartProcess?.Id ?? 0;
IPCService.GetInstance().Status = InstanceStatus.OnHold;
// Add a status notification icon in the status area
@ -848,17 +928,17 @@ namespace DisplayMagician
// Now we want to tell the user we're running a game!
// Construct the Windows toast content
ToastContentBuilder tcBuilder = new ToastContentBuilder()
tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=runningUplayGame", ToastActivationType.Foreground)
.AddText($"Running {shortcutToUse.GameName} Shortcut", hintMaxLines: 1)
.AddText($"Running {shortcutToUse.GameName}", hintMaxLines: 1)
.AddText($"Waiting for the Uplay Game {shortcutToUse.GameName} to exit...");
//.AddButton("Stop", ToastActivationType.Background, "notify=runningGame&action=stop");
ToastContent toastContent = tcBuilder.Content;
toastContent = tcBuilder.Content;
// Make sure to use Windows.Data.Xml.Dom
var doc = new XmlDocument();
doc = new XmlDocument();
doc.LoadXml(toastContent.GetContent());
// And create the toast notification
var toast = new ToastNotification(doc);
toast = new ToastNotification(doc);
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// And then show this notification
@ -882,6 +962,23 @@ namespace DisplayMagician
}
Console.WriteLine($"{uplayGameToRun.Name} has exited.");
logger.Debug($"ShortcutRepository/RunShortcut - Uplay Game {uplayGameToRun.Name} has exited.");
// Tell the user that the Uplay Game has closed
// Construct the toast content
tcBuilder = new ToastContentBuilder()
.AddToastActivationInfo("notify=stopDetected", ToastActivationType.Foreground)
.AddText($"{shortcutToUse.GameName} was closed", hintMaxLines: 1)
.AddText($"{shortcutToUse.GameName} game was shutdown and changes were reverted.");
toastContent = tcBuilder.Content;
// Make sure to use Windows.Data.Xml.Dom
doc = new XmlDocument();
doc.LoadXml(toastContent.GetContent());
// And create the toast notification
toast = new ToastNotification(doc);
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// And then show it
DesktopNotifications.DesktopNotificationManagerCompat.CreateToastNotifier().Show(toast);
}
@ -911,12 +1008,10 @@ namespace DisplayMagician
Application.DoEvents();
}
// Remove any other Notifications from us
DesktopNotifications.DesktopNotificationManagerCompat.History.Clear();
// Only replace the notification if we're minimised
if (Program.AppProgramSettings.MinimiseOnStart)
{
{
// Remind the user that DisplayMagician is running the in background
// Construct the toast content
ToastContentBuilder tcBuilder = new ToastContentBuilder()

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="DisplayMagicianBootstrapper"
Version="0.2.0.0"
UpgradeCode="D965E245-6132-4760-AD2D-07CCC9FA98F9"
Manufacturer="!(loc.Manufacturer)"
HelpUrl="!(loc.HelpUrl)"
UpdateUrl="!(loc.UpdateUrl)"
AboutUrl="!(loc.AboutUrl)"
>
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<!-- Put in a restriction to only allow installation on Windows 10 or higher -->
<bal:Condition Message="This software can only be installed on Windows 10 or later (64-bit).">
<![CDATA[VersionNT64 >= 1000]]>
</bal:Condition>
<Chain>
<!-- TODO: Define the list of chained packages. -->
<MsiPackage SourceFile="$(var.DisplayMagicianSetup.TargetDir)DisplayMagicianSetup.msi" />
<MsiPackage SourceFile="$(var.DisplayMagicianSetup.TargetDir)DisplayMagicianSetup.msi" />
</Chain>
</Bundle>
</Wix>

View File

@ -1,69 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.10</ProductVersion>
<ProjectGuid>59f3f084-ec7e-42d4-b0f4-8131b82bdb3b</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>DisplayMagicianBootstrapper</OutputName>
<OutputType>Bundle</OutputType>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Bundle.wxs" />
</ItemGroup>
<ItemGroup>
<WixExtension Include="WixNetFxExtension">
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
<Name>WixNetFxExtension</Name>
</WixExtension>
<WixExtension Include="WixBalExtension">
<HintPath>$(WixExtDir)\WixBalExtension.dll</HintPath>
<Name>WixBalExtension</Name>
</WixExtension>
</ItemGroup>
<ItemGroup>
<Folder Include="Includes\" />
<Folder Include="Lang\" />
<Folder Include="Lang\en-us\" />
</ItemGroup>
<ItemGroup>
<Content Include="Includes\DisplayMagicianVariables.wxi" />
<Content Include="Lang\en-us\EULA_en-us.rtf" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Lang\en-us\Loc_en-us.wxl" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DisplayMagicianSetup\DisplayMagicianSetup.wixproj">
<Name>DisplayMagicianSetup</Name>
<Project>{dfd22d4d-f2e4-4ba4-b32a-7a990a35ba08}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' " />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets') " />
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
<Error Text="The WiX Toolset v3.11 (or newer) build tools must be installed to build this project. To download the WiX Toolset, see http://wixtoolset.org/releases/" />
</Target>
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View File

@ -1,29 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Include>
<!--
Versioning. These have to be changed for upgrades.
It's not enough to just include newer files.
-->
<?define MajorVersion="0" ?>
<?define MinorVersion="2" ?>
<?define BuildVersion="0" ?>
<!-- Revision is NOT used by WiX in the upgrade procedure -->
<!-- Full version number to display -->
<?define VersionNumber="$(var.MajorVersion).$(var.MinorVersion).$(var.BuildVersion)" ?>
<!--
Upgrade code HAS to be the same for all updates.
Once you've chosen it don't change it.
-->
<?define UpgradeCode="33E22B4C-982F-4B02-A3DE-085693742DB5" ?>
<!--
Path to the resources directory. resources don't really need to be included
in the project structure but I like to include them for for clarity
-->
<?define ResourcesDir="$(var.ProjectDir)Resources" ?>
<!--
The name of your application exe file. This will be used to kill the process when updating
and creating the desktop shortcut
-->
<?define ExeProcessName="DisplayMagician.exe" ?>
</Include>

View File

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<WixLocalization Culture="en-us" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="LANG">1033</String>
<String Id="ProductName">DisplayMagician</String>
<String Id="ProductDescription">DisplayMagician will automatically run your games with a different display profile or audio settings and then will revert everything back to the way it was when you've finished playing.</String>
<String Id="LicenseRtf" Overridable="yes">\Lang\en-us\EULA_en-us.rtf</String>
<String Id="ManufacturerName">LittleBitBig</String>
<String Id="HelpUrl">https://displaymagician.littlebitbig.com</String>
<String Id="AboutUrl">https://displaymagician.littlebitbig.com</String>
<String Id="UpdateUrl">https://github.com/terrymacdonald/DisplayMagician/releases</String>
<String Id="LogReporterDescription">LogReporter will collect details about your computer to help us troubleshoot errors running DisplayMagician.</String>
<String Id="AppNotSupported">This application is is not supported on your current OS. Your OS must be Windows 10 or later (64-bit only).</String>
<String Id="DotNetFrameworkNeeded">.NET Framework 4.8 or higher is required for DisplayMagician to work. Please install the latest .NET Framework then run this installer again.</String>
<String Id="MustCloseDisplayMagician">You must close !(loc.ProductName) in order to upgrade it!</String>
<String Id="DowngradeErrorMessage">You cannot downgrade !(loc.ProductName) to a lower version using this installer. Please uninstall the older version of !(loc.ProductName) first!</String>
<String Id="DisplayMagicianNewerVersionInstalled">A newer version of !(loc.ProductName) is already installed.</String>
<String Id="WelcomeDlgDescription">This setup wizard will install DisplayMagician onto your computer. DisplayMagician will automatically run your games with a different display profile or audio settings and then will revert everything back to the way it was when you've finished playing. If you want to install DisplayMagician then click Next to continue or Cancel to exit.</String>
</WixLocalization>

View File

@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.0.0")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyVersion("0.2.1.0")]
[assembly: AssemblyFileVersion("0.2.1.0")]

View File

@ -2,196 +2,196 @@
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
<Component Id="cmp53B07BB21F5AFE76F5469BD1F4BA65C9" Guid="{A9763FB8-5BED-4644-AD99-420EDA2C103A}">
<Component Id="cmp53B07BB21F5AFE76F5469BD1F4BA65C9" Guid="{45338E58-9B9B-4F25-9EAC-5E15FED0578A}">
<File Id="fil8CC3C83921B00F72D50A1E4EEB792DFE" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\AudioSwitcher.AudioApi.CoreAudio.dll" />
</Component>
<Component Id="cmp8243CB1E312705B4BA74BC791635270C" Guid="{8B2F10CC-95C5-4FF3-9A11-40416CAD0CDD}">
<Component Id="cmp8243CB1E312705B4BA74BC791635270C" Guid="{92A3238C-FC29-4DDE-AAEB-ED43152C74D1}">
<File Id="filC0B7F66C67664353137460031E28BC1B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\AudioSwitcher.AudioApi.dll" />
</Component>
<Component Id="cmp493DD683A43D05F764F3DEEF08ECA4C6" Guid="{2955EB7C-04AD-47A4-B24D-661142E19AB3}">
<Component Id="cmp493DD683A43D05F764F3DEEF08ECA4C6" Guid="{7D44687B-760E-44F7-BC7F-06D924B02556}">
<File Id="filC8194EB99DFB64B8589F5D80DC8E3B4D" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\AutoUpdater.NET.dll" />
</Component>
<Component Id="cmp357CADF4E916AADB1DD6BD7938986798" Guid="{90E89265-D2F8-4CB3-B096-416258EA953C}">
<Component Id="cmp357CADF4E916AADB1DD6BD7938986798" Guid="{20377E64-25F8-40B8-A722-8120A5E87AE8}">
<File Id="fil900464E773972F43219693B12A52EDE2" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\AutoUpdater.NET.pdb" />
</Component>
<Component Id="cmp78B9C7C9D51B2878B72DCBACE49DE398" Guid="{B2895E50-6236-42D5-9958-2619F6127CE7}">
<Component Id="cmp78B9C7C9D51B2878B72DCBACE49DE398" Guid="{DC021925-6497-4B5A-A606-E1E4DD42C298}">
<File Id="filDE7F24A649EB60701DC0EC41FE83CBBE" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\CircularProgressBar.dll" />
</Component>
<Component Id="cmp7EE113DB90D07F08FCE70C1861DEA947" Guid="{0D995036-4382-464A-A0A2-521EE90EECE9}">
<Component Id="cmp7EE113DB90D07F08FCE70C1861DEA947" Guid="{2003F312-E070-4896-972B-3EA4BF026F15}">
<File Id="filF7D383DE2E27A23D8552666CEA0DDC80" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\DisplayMagician.exe" />
</Component>
<Component Id="cmpCF520827D65E51E3ECB59344A6F528D0" Guid="{40D1BF54-45EA-4EBA-8A0F-8886EA5FA31A}">
<Component Id="cmpCF520827D65E51E3ECB59344A6F528D0" Guid="{CD54C8B4-B3BC-4419-A61F-74089D50FC8E}">
<File Id="fil2841FB135B81D3B7EF6634B1E3E562DA" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\DisplayMagician.exe.config" />
</Component>
<Component Id="cmp20CF355FCD243C61CF66FB91F20BEA24" Guid="{93C0AE8F-DA8F-44E7-8766-9FF036B57DAB}">
<Component Id="cmp20CF355FCD243C61CF66FB91F20BEA24" Guid="{9BED7655-D894-48CD-BD86-25192BBD98DA}">
<File Id="fil00FEE1F8F6F3766FD0431A9B72F4FCC7" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\DisplayMagician.pdb" />
</Component>
<Component Id="cmp936B3459EEFF10D8EB978B7DD0F9FDDA" Guid="{04EF3338-39EF-4D68-85DB-F73949ADC4FB}">
<Component Id="cmp936B3459EEFF10D8EB978B7DD0F9FDDA" Guid="{6D4DDEB7-B506-4B8E-A0FE-0E109590B230}">
<File Id="fil44F64B4F8FBBEAA84A71077F7F3B6B4D" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\DisplayMagician.Shared.dll" />
</Component>
<Component Id="cmpEFA0EED8369E2F430E0ED6D9EB027553" Guid="{0246A13D-8CBF-4A87-AA05-C81119CD8428}">
<Component Id="cmpEFA0EED8369E2F430E0ED6D9EB027553" Guid="{6069188C-D39C-484D-8029-A0DD34A8004F}">
<File Id="fil52BE9F94EBFDF8C5CFEC426A17966F40" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\DisplayMagician.Shared.pdb" />
</Component>
<Component Id="cmpE8833A8E220525D7707A018B20CEDD87" Guid="{35DFBC74-8C98-40E6-A607-A34F2AC1AF71}">
<Component Id="cmpE8833A8E220525D7707A018B20CEDD87" Guid="{36EE3CAB-A7B9-47A0-8736-2D834F0EAE41}">
<File Id="filD4FD53D2FBF78674DBC3A1B446B44FC5" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\EDIDParser.dll" />
</Component>
<Component Id="cmp8C52E948AAB2D43DF696BB7D003A8E4B" Guid="{2EF91BC8-BAE2-4C56-936D-B86F220C1785}">
<Component Id="cmp8C52E948AAB2D43DF696BB7D003A8E4B" Guid="{B46914FD-28D6-4193-9039-FB565B26502F}">
<File Id="fil1965347683EC48A269FE672473CD04C2" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\HtmlAgilityPack.dll" />
</Component>
<Component Id="cmp137F8F514DF6364F5BBFCBDB1B1B9807" Guid="{C7821DE9-C6CD-44FB-8852-C0464F805855}">
<Component Id="cmp137F8F514DF6364F5BBFCBDB1B1B9807" Guid="{93132EFA-014D-46F1-8793-2F38D0644E8B}">
<File Id="filA79B24FCE8AA4DA0DC9A3ACBE5D830DD" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\HtmlAgilityPack.pdb" />
</Component>
<Component Id="cmpC13B4DB64E30D03117ECF099B1A9CD9C" Guid="{9DF3AB67-F638-4F98-B6B3-AE6CDA0387F4}">
<Component Id="cmpC13B4DB64E30D03117ECF099B1A9CD9C" Guid="{3AF5562D-49A0-495E-83E5-18C983C0852C}">
<File Id="fil44FFB513E29A8346713440B4BCB7F1E6" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\IconExtractor.dll" />
</Component>
<Component Id="cmp6AB92D1CF70395670A490E1B9BD347DE" Guid="{7F23BB2E-F384-4EC0-A935-71B103895CFA}">
<Component Id="cmp6AB92D1CF70395670A490E1B9BD347DE" Guid="{D3040106-D35D-4B1B-904E-F5BF11B708A2}">
<File Id="fil4DD582D50D7AC9DDD5292A76257854FA" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\IconLib.dll" />
</Component>
<Component Id="cmp23C6CFB3962E9B4E2A7E8EF56F20A99F" Guid="{D74A2E3C-61C5-4C32-B0FA-59B5BDF992F4}">
<Component Id="cmp23C6CFB3962E9B4E2A7E8EF56F20A99F" Guid="{066BD4D9-583C-4C18-97D5-29FFF34535AD}">
<File Id="fil0F18A66FBBBB6C44A052B9FB77ACD8F8" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\IconPicker.dll" />
</Component>
<Component Id="cmp5069692C1912B298A026EA30A39A2F36" Guid="{BC588228-4E3A-4F1B-858F-A657F9F78A6F}">
<Component Id="cmp5069692C1912B298A026EA30A39A2F36" Guid="{048CBBEC-8920-4DB2-AD05-BC4C7AC041E6}">
<File Id="fil15BCAD6A05EB985A23A6B9DE3EFEB933" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ImageListView.dll" />
</Component>
<Component Id="cmp6B91543EC1EAFC09F3C7747C1333F99A" Guid="{C7EBBC10-A161-43EA-AD2F-4478C998F80C}">
<Component Id="cmp6B91543EC1EAFC09F3C7747C1333F99A" Guid="{7B954702-3E31-4A52-AC10-385D526F47AC}">
<File Id="fil34AC49C1FA6CC0335FB4F16BCD03AA7B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\McMaster.Extensions.CommandLineUtils.dll" />
</Component>
<Component Id="cmp8A11CDCDF04C29EC9CA9A0C1D0D78B04" Guid="{9FEFD5F7-C4DE-4C50-B8B1-C285D088220B}">
<Component Id="cmp8A11CDCDF04C29EC9CA9A0C1D0D78B04" Guid="{F3B33283-72AE-4770-B315-6C3EA51BD1C5}">
<File Id="fil151DD1163831E94E80724A88F88C2231" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\Microsoft.Toolkit.Uwp.Notifications.dll" />
</Component>
<Component Id="cmp62D956D9975F1430FEAB37FCAD94474F" Guid="{63D2CE1F-68C7-4B2B-992D-79C884A8C5B1}">
<Component Id="cmp62D956D9975F1430FEAB37FCAD94474F" Guid="{31FD7423-1B64-4486-9954-D7C8894435D8}">
<File Id="fil4F519990E7E5387E7BAEB5C056617826" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\Microsoft.Toolkit.Uwp.Notifications.pdb" />
</Component>
<Component Id="cmpA6AEEDB3EBF416E3AD000E7408FE3402" Guid="{2F58C2C7-8EA1-41BB-BD50-7DAFA3E2A4B3}">
<Component Id="cmpA6AEEDB3EBF416E3AD000E7408FE3402" Guid="{3C511BBD-5848-43AD-9D78-74CBF39FF17C}">
<File Id="filA93EB7C7565EEDD39AF3362752AE09DB" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\MintPlayer.IconUtils.dll" />
</Component>
<Component Id="cmpA7927FF61A499CF81EE0A562CDFEDEC7" Guid="{A60D5169-08B7-4A37-B9F6-2928143A15BD}">
<Component Id="cmpA7927FF61A499CF81EE0A562CDFEDEC7" Guid="{99E54CE3-D85F-40EB-A59F-8F3CDEA20D9E}">
<File Id="filD7DC5F43B3964ACECD7725F05E664960" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\Newtonsoft.Json.dll" />
</Component>
<Component Id="cmpC64ECA245317593760E42F3996F3A079" Guid="{0D9733B3-F313-4CA0-A286-5DBD1B1462A3}">
<Component Id="cmpC64ECA245317593760E42F3996F3A079" Guid="{17288878-B3C7-4D5A-940A-977CBFEA5A5D}">
<File Id="fil5299F0448E950048C778AA65A04FB498" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\NLog.dll" />
</Component>
<Component Id="cmp5CFF8A0C9C138424DA47E04F4B0986EB" Guid="{75E3E9C9-AEA6-4F61-88D1-FBD98D600548}">
<Component Id="cmp5CFF8A0C9C138424DA47E04F4B0986EB" Guid="{CA90292D-0E82-47C6-A566-C960185AF4C5}">
<File Id="filDB484734B403A8C8EE2F5B5165068C91" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\NvAPIWrapper.dll" />
</Component>
<Component Id="cmpBEC07D0236076B07E4E7D7632CCA69CB" Guid="{82A7FFFD-7FF6-4250-9393-5A8933B63A9F}">
<Component Id="cmpBEC07D0236076B07E4E7D7632CCA69CB" Guid="{ABF648F1-17BF-4959-9A47-CEB77BA148D5}">
<File Id="fil8C59ED1965E9E2D1C82459BE5C1E903E" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\QueryString.NETCore.dll" />
</Component>
<Component Id="cmpAE5FC77E7BB7E9CB720EF7CEE118A4CE" Guid="{058C4089-737C-40CD-8B57-3FE147F1C88E}">
<Component Id="cmpAE5FC77E7BB7E9CB720EF7CEE118A4CE" Guid="{35DFC824-B1A1-491B-862D-8D3A344CAC6F}">
<File Id="filD448167ABB54E447850BA2A203C5FCA1" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\QueryString.NETCore.pdb" />
</Component>
<Component Id="cmpB76F273FDED5EA841158E966B403CFC8" Guid="{0551FD5B-1AAD-473F-8AAF-41E794E298EE}">
<Component Id="cmpB76F273FDED5EA841158E966B403CFC8" Guid="{D1E02032-96EA-4862-AB4A-1A7CB1F436EA}">
<File Id="fil8A5957F9C3DCF1A6D414F9F34402CB53" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\System.Drawing.Common.dll" />
</Component>
<Component Id="cmp7DD29D6442A6E450B2316729EA2C0F1D" Guid="{FB2FD6C6-7985-4BAD-8EE6-393BFC169064}">
<Component Id="cmp7DD29D6442A6E450B2316729EA2C0F1D" Guid="{9913EAB7-3C02-4605-BBD9-D9A892E46E6E}">
<File Id="fil9DF3290031BCB652454E62345D1FAE6B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\System.ValueTuple.dll" />
</Component>
<Component Id="cmpA8825A49786C04320E75BCFC8E961667" Guid="{0B518E1B-D8AC-4CEA-8156-9E33C30EEC71}">
<Component Id="cmpA8825A49786C04320E75BCFC8E961667" Guid="{A78A3D6D-F120-4E25-BCD3-847C2CC9326C}">
<File Id="filD5FED76D92088BA98BD9CF7D4D9B7EF2" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ValveKeyValue.dll" />
</Component>
<Component Id="cmp650327FC006E09EDFC7039D6E7A6F340" Guid="{AD3227CC-0596-4265-B512-92F509A0C36B}">
<Component Id="cmp650327FC006E09EDFC7039D6E7A6F340" Guid="{DC847339-CD4E-4AFC-ABE1-89E1B1AB5201}">
<File Id="filB58835925907FAE2AB432C29CD8C03B4" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\WindowsDisplayAPI.dll" />
</Component>
<Component Id="cmp27AC6F10258FA1C97C54F3C1D153D122" Guid="{1F5E6F4C-5F5E-4392-BCD2-5731B07EB4AC}">
<Component Id="cmp27AC6F10258FA1C97C54F3C1D153D122" Guid="{AB96F714-C01D-48B1-B6C1-676CB28D5124}">
<File Id="fil01CF08752F4284E3144706F10481AEA0" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\WinFormAnimation.dll" />
</Component>
<Directory Id="dirC9CEBA44737D7806DC2F52AE07FB1335" Name="ar">
<Component Id="cmp1D8A437520B8A88B5329BA85AF49F972" Guid="{5147F56C-AAFB-4841-80FE-DBACA8377BED}">
<Component Id="cmp1D8A437520B8A88B5329BA85AF49F972" Guid="{7A185A4D-2E84-45B2-BCF2-43B78DF80672}">
<File Id="filC934041A1382ABA35ECB5DE3BB6C4148" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ar\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir1764AC367AADA7667CA18D19856EB829" Name="cs">
<Component Id="cmp1B983AD82D33902E3869C2CD3E625557" Guid="{05843042-F2F4-4626-BBAF-4ABD669E8910}">
<Component Id="cmp1B983AD82D33902E3869C2CD3E625557" Guid="{1D07E0AB-399A-4966-86C5-B5BF9AF70585}">
<File Id="fil5CE1877B3764F3FA8C53E465EC4F1E6B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\cs\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir70240FB68A7D32052E3646DFEC7177A6" Name="da">
<Component Id="cmp645D07231E6F1B4B9F84AAED05DE08B9" Guid="{17B44F23-5891-4649-A6EB-857760A7E772}">
<Component Id="cmp645D07231E6F1B4B9F84AAED05DE08B9" Guid="{BC427D42-E11A-4C8A-843F-3EA7D82416C9}">
<File Id="fil6664ED7C2E9121315323240F4A94F71F" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\da\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir1C628EE15A29CD6ED08798D6B0A06B2F" Name="de">
<Component Id="cmpF7E34D6BF19681066F5E973C8D30C63A" Guid="{43BA2AA8-702C-4F0B-8B8D-4896C5806BF6}">
<Component Id="cmpF7E34D6BF19681066F5E973C8D30C63A" Guid="{67F5B2F4-F0D6-40EC-B1FD-E3A8826A5EAD}">
<File Id="filC2D506AF5C5B86FA443A326E067EF823" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\de\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir6B7DF5E7779A02DE589C2D4AABF889BA" Name="es">
<Component Id="cmpB54DE98A33D508FC6EF7E3761CDF0661" Guid="{9496F8D3-0C25-47E2-A2D9-D61F4CD9E371}">
<Component Id="cmpB54DE98A33D508FC6EF7E3761CDF0661" Guid="{A7230A09-17D1-4538-A5DB-7EB4690FDC33}">
<File Id="filCDFD6865877E32514969EAE54D3CC9F9" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\es\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirCCE997692B032DBDA6174416BFED255E" Name="fr">
<Component Id="cmp81105D91EF7C9FAB44E52202DBAF417C" Guid="{40C9E2A7-7008-4354-B381-87057CEE20A1}">
<Component Id="cmp81105D91EF7C9FAB44E52202DBAF417C" Guid="{4D53E23F-4282-48DC-AC10-DF3D5C3146A7}">
<File Id="fil6B84F6EC6C9F50B7139B0E99914B401A" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\fr\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirC0620602576770B728F6D7CF835E4230" Name="it">
<Component Id="cmpCC505044A437DF227E44E7B31A54D0BF" Guid="{A13F993C-F020-4E87-B672-BBE4DDF5AA1F}">
<Component Id="cmpCC505044A437DF227E44E7B31A54D0BF" Guid="{74458EBA-75AE-44C0-8FC5-E57178966E5E}">
<File Id="filD812096039F1E9D729065E7109AB857F" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\it\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir299EDA906CCCF90FED2B1DE9A0AE661D" Name="ja-JP">
<Component Id="cmp2B1808EAFED02DC5D42D475F2BB83458" Guid="{BD5F0E1C-0610-45D1-83D1-22C70FCB6BC6}">
<Component Id="cmp2B1808EAFED02DC5D42D475F2BB83458" Guid="{092E2C7C-D849-483E-BC68-FDD7CF84B84F}">
<File Id="filA3B2CB69DE697F856902A5EB591C1BA9" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ja-JP\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir5F675FF0062E1C1CACE0170EC20A5208" Name="ko">
<Component Id="cmpE8B7CCFB66BD36E9CF741814FEE6AD14" Guid="{027EBC8E-EB62-44B5-B0FF-C6E7FEF3EE6E}">
<Component Id="cmpE8B7CCFB66BD36E9CF741814FEE6AD14" Guid="{4EF7F400-C217-43C5-8C3D-1E931C1CB79A}">
<File Id="fil1A20D0790F057F2E9E188792193A32BD" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ko\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir0BFBA37D9F94C8F490A10DA87815DED5" Name="nl">
<Component Id="cmp9449E2C32768367A145DF20983A12FF7" Guid="{6F81C9E4-91E4-4B33-9E81-745E30A79CC3}">
<Component Id="cmp9449E2C32768367A145DF20983A12FF7" Guid="{34611ADD-681A-4F0D-A64A-1F5800387316}">
<File Id="filE87E30BFF942128946D7656D111B9E28" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\nl\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir5D30DDBDF1F855D2C3CFCAE5A7D4DFB7" Name="pl">
<Component Id="cmp34EDF353BCC5E92A39657F713CAF1AA0" Guid="{0D6B246B-F92D-461B-B4BF-E08442CDD998}">
<Component Id="cmp34EDF353BCC5E92A39657F713CAF1AA0" Guid="{CDB834D9-1C90-49B5-9B1B-CA9675B6D765}">
<File Id="filB0BCC1B40E0F3F37F614E9AC51A1BEDF" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\pl\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir32D9AD0C9188498053C05E4C1D09269D" Name="pt">
<Component Id="cmp1E67A3938BF74EC5ADD54FAB69A80CB3" Guid="{6918A697-3269-4470-B71E-17A47FE330C3}">
<Component Id="cmp1E67A3938BF74EC5ADD54FAB69A80CB3" Guid="{09A155ED-F43A-44F8-8C2C-CF32E09B71DD}">
<File Id="filB6A7729764F42969B1A0A1093D3F600D" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\pt\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir3EA1054A4A68F70CEF22E983B9D684DB" Name="pt-BR">
<Component Id="cmpEEAAA81C74F88DC87008EB031C2F1030" Guid="{345C0AAF-A258-440A-B571-664A33A7D024}">
<Component Id="cmpEEAAA81C74F88DC87008EB031C2F1030" Guid="{7E7A9B89-C529-4F69-832C-F98DCA61B61E}">
<File Id="filBDE4FF11B65DE8486E6AE2917075C4F2" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\pt-BR\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirF9A13AB290C9570B2C0CE7CB6EF9D86E" Name="ru">
<Component Id="cmpA923B5BC9CB54BE671D485B3A39D93A5" Guid="{A88EBC08-BEB9-4A2C-8315-459B89BBC31C}">
<Component Id="cmpA923B5BC9CB54BE671D485B3A39D93A5" Guid="{E125BA7D-5078-421F-A16C-87115BC67E15}">
<File Id="fil0672B3CFA1451A14C32747BE1794732F" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\ru\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dir0A61397BAE3772A68E21EF1C51156F2C" Name="sk">
<Component Id="cmp8D4C4B444510137E2D82B4FD6A0B9776" Guid="{D6655FD8-2D76-49A1-9E86-718138B2A3A0}">
<Component Id="cmp8D4C4B444510137E2D82B4FD6A0B9776" Guid="{593DE901-0B6F-4934-A535-F8EC555C725C}">
<File Id="filC5765B8E01B5B47AAF9794806A76E690" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\sk\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirBBD306FA33D57073FD02CF4EFC3A0326" Name="sv">
<Component Id="cmpFB55A1004D6DF4923A748FDC2F523D8B" Guid="{B46DD531-D99B-4242-AD8B-25A5163A9531}">
<Component Id="cmpFB55A1004D6DF4923A748FDC2F523D8B" Guid="{052C836A-6FC5-4BA9-9027-9A43B10FA30B}">
<File Id="fil54738B12543ED9C06F79D373D2EB015B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\sv\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirCE3BF130A177608F70523C718370D4AB" Name="th">
<Component Id="cmp4490FE644B0447492BBB39E2832B87C0" Guid="{5AFDE454-F125-40B1-99CD-18C9111910D3}">
<Component Id="cmp4490FE644B0447492BBB39E2832B87C0" Guid="{EA5F9919-3AEF-402E-ABF7-05F594988A12}">
<File Id="fil4735CFBE1739CDA690669E71EA774734" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\th\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirC06FC06848A827DE7E1246A3EEE173B9" Name="tr">
<Component Id="cmp7311ACB3A3BB0005E1BD421A03BAC70D" Guid="{85DEE2EA-054E-41CB-9D67-43AB08A7AC30}">
<Component Id="cmp7311ACB3A3BB0005E1BD421A03BAC70D" Guid="{3CAE5EA9-2196-479B-8CE0-3C6E66E3387F}">
<File Id="fil9EDE895C94E3E737A7E2345A3354E4ED" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\tr\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirA9E5CFBEBA3415CA12E141D142550091" Name="zh">
<Component Id="cmp0E8893641CCC97E160269D736795633C" Guid="{86BC7DA7-2641-43AA-AEB3-EE7A7A8F8F5A}">
<Component Id="cmp0E8893641CCC97E160269D736795633C" Guid="{049E5177-B898-4C0E-91B9-7F5A50A1E708}">
<File Id="filD14D5D68900793C75702C773F11A305F" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\zh\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>
<Directory Id="dirB915F738D24EC7F5CE340DC7A43B9BD1" Name="zh-tw">
<Component Id="cmp1D85EF433AB8DDB383D91C1C33BAA91A" Guid="{32FD09BC-B080-4809-B8A5-A42BF0AD66A2}">
<Component Id="cmp1D85EF433AB8DDB383D91C1C33BAA91A" Guid="{56499EEC-57A1-436F-9712-870231A19C02}">
<File Id="fil03FB6CBB0D2712EFAD51B20D66FE4B9B" KeyPath="yes" Source="$(var.DisplayMagicianFilesDir)\zh-tw\AutoUpdater.NET.resources.dll" />
</Component>
</Directory>

View File

@ -5,12 +5,12 @@ using System.Runtime.InteropServices;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("HeliosDisplayManagement.Shared")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("DisplayMagician.Shared")]
[assembly: AssemblyDescription("Shared libraries for DisplayMagician")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("DisplayMagicianShared")]
[assembly: AssemblyCopyright("Copyright © 2017")]
[assembly: AssemblyCompany("LittleBitBig")]
[assembly: AssemblyProduct("DisplayMagician")]
[assembly: AssemblyCopyright("Copyright © Terry MacDonald 2020-2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.9.5.*")]
[assembly: AssemblyFileVersion("0.9.5.0")]
[assembly: AssemblyVersion("0.2.1.*")]
[assembly: AssemblyFileVersion("0.2.1.0")]

View File

@ -35,5 +35,5 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.0.*")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyVersion("0.2.1.*")]
[assembly: AssemblyFileVersion("0.2.1.0")]