From ed64276e810ad5aa3494701a5b0fc2f2017fbecc Mon Sep 17 00:00:00 2001 From: Scott McIntosh Date: Wed, 27 Mar 2019 00:25:46 -0700 Subject: [PATCH] 1. Removed the Modify dialog 2. Removed ability to edit config from program as feature was causing too many issues. 3. re-implmented parallel loading of modules 4. Added sorting by DisplayName to the module selection combo box as the parallel load causes the default order to be off. 5. Set ACL's for User, Power User and Creator on install using a custom action 6. Custom action actions logged in customactions.log 7. Program can be installed in any desired directory now 8. Final 2.x version is 2.4 --- .gitignore | 3 + CustomActions/CustomActions.csproj | 55 +++++++++++ CustomActions/CustomActions.csproj.user | 7 ++ CustomActions/Properties/AssemblyInfo.cs | 36 +++++++ CustomActions/SetUserPerms.Designer.cs | 36 +++++++ CustomActions/SetUserPerms.cs | 64 +++++++++++++ .../Models/ConfigurationDefinition.cs | 9 ++ MFDSettingsManager/Properties/AssemblyInfo.cs | 4 +- MFDisplay.sln | 20 ++++ MFDisplay/ConfigurationWindow.xaml.cs | 11 ++- MFDisplay/MFDisplay.csproj | 17 ++-- MFDisplay/MFDisplayApp.xaml.cs | 26 +---- MFDisplay/MainWindow.xaml | 3 - MFDisplay/MainWindow.xaml.cs | 16 +--- MFDisplay/ModuleDefinitionComparer.cs | 22 +++++ MFDisplay/Properties/AssemblyInfo.cs | 4 +- MFDisplay/log4net.config | 4 +- Setup/Setup.vdproj | 94 +++++++++++++++++-- 18 files changed, 365 insertions(+), 66 deletions(-) create mode 100644 CustomActions/CustomActions.csproj create mode 100644 CustomActions/CustomActions.csproj.user create mode 100644 CustomActions/Properties/AssemblyInfo.cs create mode 100644 CustomActions/SetUserPerms.Designer.cs create mode 100644 CustomActions/SetUserPerms.cs create mode 100644 MFDisplay/ModuleDefinitionComparer.cs diff --git a/.gitignore b/.gitignore index 38be861..ecaab56 100644 --- a/.gitignore +++ b/.gitignore @@ -229,3 +229,6 @@ /MFDSettingsManager/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache /TestOutput /Tests-MFDisplay/obj/Release +/CustomActions/bin/Debug +/CustomActions/obj/Debug +/Output diff --git a/CustomActions/CustomActions.csproj b/CustomActions/CustomActions.csproj new file mode 100644 index 0000000..db266eb --- /dev/null +++ b/CustomActions/CustomActions.csproj @@ -0,0 +1,55 @@ + + + + + Debug + AnyCPU + {957B51AC-5241-4213-9553-7623BD0AA2C6} + Library + Properties + CustomActions + CustomActions + v4.6.1 + 512 + true + + + true + full + false + ..\Output\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Output\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + Component + + + SetUserPerms.cs + + + + \ No newline at end of file diff --git a/CustomActions/CustomActions.csproj.user b/CustomActions/CustomActions.csproj.user new file mode 100644 index 0000000..b6377f0 --- /dev/null +++ b/CustomActions/CustomActions.csproj.user @@ -0,0 +1,7 @@ + + + + Program + C:\Users\Scott\Source\Repos\MFDisplay\Deploy\setup.exe + + \ No newline at end of file diff --git a/CustomActions/Properties/AssemblyInfo.cs b/CustomActions/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..4020101 --- /dev/null +++ b/CustomActions/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("CustomActions")] +[assembly: AssemblyDescription("Defines custom install actions for the installer.")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Vyper Industries")] +[assembly: AssemblyProduct("CustomActions")] +[assembly: AssemblyCopyright("Copyright © 2019 Vyper Industires")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("957b51ac-5241-4213-9553-7623bd0aa2c6")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// 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("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/CustomActions/SetUserPerms.Designer.cs b/CustomActions/SetUserPerms.Designer.cs new file mode 100644 index 0000000..abb1b3a --- /dev/null +++ b/CustomActions/SetUserPerms.Designer.cs @@ -0,0 +1,36 @@ +namespace CustomActions +{ + partial class SetUserPerms + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + components = new System.ComponentModel.Container(); + } + + #endregion + } +} \ No newline at end of file diff --git a/CustomActions/SetUserPerms.cs b/CustomActions/SetUserPerms.cs new file mode 100644 index 0000000..c08494b --- /dev/null +++ b/CustomActions/SetUserPerms.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections; +using System.ComponentModel; +using System.Configuration.Install; +using System.IO; +using System.Security.AccessControl; +using System.Security.Permissions; +using System.Security.Principal; + +namespace CustomActions +{ + [RunInstaller(true)] + public partial class SetUserPerms : Installer + { + public SetUserPerms() + { + InitializeComponent(); + } + + [SecurityPermission(SecurityAction.Demand)] + public override void Install(IDictionary stateSaver) + { + base.Install(stateSaver); + + // This gets the named parameters passed in from your custom action + string folder = Context.Parameters["folder"]; + + var powerUserSid = new SecurityIdentifier(WellKnownSidType.BuiltinPowerUsersSid, null); + var userSid = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null); + var creatorOwnerSid = new SecurityIdentifier(WellKnownSidType.CreatorOwnerSid, null); + + // This gets the built in users group + File.AppendAllText(Path.Combine(folder, "customactions.log"), $"{Environment.NewLine}{DateTime.Now.ToShortDateString()} {DateTime.Now.ToShortTimeString()} : This is output from the installer, Creator: {creatorOwnerSid?.Value} PowerUser: {powerUserSid} User: {userSid} the folder: {folder}{Environment.NewLine}"); + var writerulePowerUsers = new FileSystemAccessRule(powerUserSid, FileSystemRights.FullControl, AccessControlType.Allow); + var writeruleUsers = new FileSystemAccessRule(userSid, FileSystemRights.FullControl, AccessControlType.Allow); + var writeruleCreator = new FileSystemAccessRule(creatorOwnerSid, FileSystemRights.FullControl, AccessControlType.Allow); + + if (!string.IsNullOrEmpty(folder) && Directory.Exists(folder)) + { + // Get your file's ACL + DirectorySecurity fsecurity = Directory.GetAccessControl(folder); + + // Add the new rule to the ACL + fsecurity.AddAccessRule(writerulePowerUsers); + fsecurity.AddAccessRule(writeruleUsers); + fsecurity.AddAccessRule(writeruleCreator); + + // Set the ACL back to the file + Directory.SetAccessControl(folder, fsecurity); + + File.AppendAllText(Path.Combine(folder, "customactions.log"), $"{Environment.NewLine}{DateTime.Now.ToShortDateString()} {DateTime.Now.ToShortTimeString()} : folder: {folder} was processed.{Environment.NewLine}"); + } + + } + + [SecurityPermission(SecurityAction.Demand)] + public override void Commit(IDictionary savedState) + { + base.Commit(savedState); + var site = Context.Parameters["site"] ?? "https://github.com/ScottyMac52/MFDisplay/wiki"; + System.Diagnostics.Process.Start(site); + } + } +} diff --git a/MFDSettingsManager/Models/ConfigurationDefinition.cs b/MFDSettingsManager/Models/ConfigurationDefinition.cs index 09ddfa2..a3a7908 100644 --- a/MFDSettingsManager/Models/ConfigurationDefinition.cs +++ b/MFDSettingsManager/Models/ConfigurationDefinition.cs @@ -168,6 +168,15 @@ public string ToReadableString() return $"Config {Name} for {ModuleName} at ({Left}, {Top}) for ({Width}, {Height}) with Opacity {Opacity} from {completePath ?? "Unknown Image"} was {fileStatus} at Offset ({XOffsetStart}, {YOffsetStart}) for ({XOffsetFinish - XOffsetStart}, {YOffsetFinish - YOffsetStart})."; } + /// + /// Short form + /// + /// + public override string ToString() + { + return ToReadableString(); + } + #endregion Public methods #region Private helpers diff --git a/MFDSettingsManager/Properties/AssemblyInfo.cs b/MFDSettingsManager/Properties/AssemblyInfo.cs index 8c605d9..b5c8a18 100644 --- a/MFDSettingsManager/Properties/AssemblyInfo.cs +++ b/MFDSettingsManager/Properties/AssemblyInfo.cs @@ -31,5 +31,5 @@ // 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("2.3.0.0")] -[assembly: AssemblyFileVersion("2.3.0.0")] +[assembly: AssemblyVersion("2.4.0.0")] +[assembly: AssemblyFileVersion("2.4.0.0")] diff --git a/MFDisplay.sln b/MFDisplay.sln index cca7142..2ae6ac0 100644 --- a/MFDisplay.sln +++ b/MFDisplay.sln @@ -17,6 +17,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MFDSettingsManager", "MFDSe EndProject Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Setup", "Setup\Setup.vdproj", "{02517BB3-3B9C-4574-A934-2C05A6A29928}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomActions", "CustomActions\CustomActions.csproj", "{957B51AC-5241-4213-9553-7623BD0AA2C6}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution All|Any CPU = All|Any CPU @@ -95,6 +97,24 @@ Global {02517BB3-3B9C-4574-A934-2C05A6A29928}.Release|Any CPU.Build.0 = Release {02517BB3-3B9C-4574-A934-2C05A6A29928}.Release|x64.ActiveCfg = Release {02517BB3-3B9C-4574-A934-2C05A6A29928}.Release|x86.ActiveCfg = Release + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|Any CPU.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|Any CPU.Build.0 = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|x64.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|x64.Build.0 = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|x86.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.All|x86.Build.0 = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|x64.ActiveCfg = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|x64.Build.0 = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|x86.ActiveCfg = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Debug|x86.Build.0 = Debug|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|Any CPU.Build.0 = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|x64.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|x64.Build.0 = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|x86.ActiveCfg = Release|Any CPU + {957B51AC-5241-4213-9553-7623BD0AA2C6}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/MFDisplay/ConfigurationWindow.xaml.cs b/MFDisplay/ConfigurationWindow.xaml.cs index e416cfe..f8389f5 100644 --- a/MFDisplay/ConfigurationWindow.xaml.cs +++ b/MFDisplay/ConfigurationWindow.xaml.cs @@ -5,6 +5,7 @@ using MFDSettingsManager.Models; using System; using System.Collections.Generic; +using System.Configuration; using System.Drawing; using System.IO; using System.Linq; @@ -145,8 +146,14 @@ private void Save() savedConfig.DefaultConfig = cbDefaultModule.SelectedValue?.ToString(); Logger.Info($"Saving the configuration file {savedConfig.CurrentConfiguration.FilePath}..."); // TODO: Update the Configuration Section from the Model - - savedConfig.CurrentConfiguration.Save(); + try + { + savedConfig.CurrentConfiguration.Save(ConfigurationSaveMode.Modified, true); + } + catch (System.Exception ex) + { + Logger.Error($"Unable to save the configuration to {savedConfig.CurrentConfiguration.FilePath}", ex); + } } private void ConfigurationMenuItem_Click(object sender, RoutedEventArgs e) diff --git a/MFDisplay/MFDisplay.csproj b/MFDisplay/MFDisplay.csproj index e7c524e..dbe1b9a 100644 --- a/MFDisplay/MFDisplay.csproj +++ b/MFDisplay/MFDisplay.csproj @@ -249,9 +249,6 @@ MSBuild:Compile Designer - - ConfigurationWindow.xaml - MainWindow.xaml @@ -264,11 +261,8 @@ MFDisplayApp.xaml Code + - - MSBuild:Compile - Designer - Designer XamlIntelliSenseFileGenerator @@ -308,12 +302,13 @@ Always + Designer Always - PreserveNewest Designer + PreserveNewest Designer @@ -324,10 +319,10 @@ - + Designer - Always - + PreserveNewest + diff --git a/MFDisplay/MFDisplayApp.xaml.cs b/MFDisplay/MFDisplayApp.xaml.cs index fa43362..cf40be7 100644 --- a/MFDisplay/MFDisplayApp.xaml.cs +++ b/MFDisplay/MFDisplayApp.xaml.cs @@ -139,28 +139,12 @@ protected override void OnStartup(StartupEventArgs e) } Configuration = sectionConfig.ToModel(Logger); - while (!Directory.Exists(Configuration?.FilePath)) - { - var configWindow = new ConfigurationWindow() - { - Logger = Logger - }; - configWindow.ShowInTaskbar = true; - configWindow.ShowDialog(); - sectionConfig = MFDConfigurationSection.GetConfig(Logger); - Configuration = sectionConfig.ToModel(Logger); - if (!Directory.Exists(Configuration?.FilePath)) - { - var msgResult = MessageBox.Show($"{Configuration?.FilePath} is not a valid path. Do you wish to try another path?", "Invalid Path Configuration", MessageBoxButton.YesNo, MessageBoxImage.Hand); - if(msgResult != MessageBoxResult.Yes) - { - break; - } - } - } - - if (!Directory.Exists(Configuration?.FilePath)) + if(!Directory.Exists(Configuration?.FilePath)) { + var mfdSettingsFile = Path.Combine((new FileInfo(assmLocation))?.DirectoryName, "mfdsettings.config"); + var errorMessage = $"{Configuration.FilePath} is not a valid path. Please use an elevated editor, runas Administrator, and edit the FilePath in the file {mfdSettingsFile}"; + Logger.Error(errorMessage); + MessageBox.Show(errorMessage, "Configuration Error", MessageBoxButton.OK, MessageBoxImage.Error); Shutdown(2); } else diff --git a/MFDisplay/MainWindow.xaml b/MFDisplay/MainWindow.xaml index 593886a..dadf1f1 100644 --- a/MFDisplay/MainWindow.xaml +++ b/MFDisplay/MainWindow.xaml @@ -12,9 +12,6 @@ - - - diff --git a/MFDisplay/MainWindow.xaml.cs b/MFDisplay/MainWindow.xaml.cs index 68f71cf..93a96cd 100644 --- a/MFDisplay/MainWindow.xaml.cs +++ b/MFDisplay/MainWindow.xaml.cs @@ -78,7 +78,9 @@ private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs public void SetupWindow() { MFDList = new SortedList(); - AvailableModules = Config?.Modules; + var moduleList = Config?.Modules; + moduleList?.Sort(new ModuleDefinitionComparer()); + AvailableModules = moduleList; cbModules.ItemsSource = AvailableModules; cbModules.DisplayMemberPath = "DisplayName"; @@ -219,18 +221,6 @@ private void CbModules_Loaded(object sender, RoutedEventArgs e) } } - private void ConfigurationMenuItem_Click(object sender, RoutedEventArgs e) - { - DestroyMFDs(); - var configWindow = new ConfigurationWindow() - { - Logger = Logger, - Owner = this - }; - configWindow.ShowDialog(); - SetupWindow(); - } - private void HelpMenuItem_Click(object sender, RoutedEventArgs e) { MessageBox.Show(((MFDisplayApp)Application.Current).VersionString); diff --git a/MFDisplay/ModuleDefinitionComparer.cs b/MFDisplay/ModuleDefinitionComparer.cs new file mode 100644 index 0000000..822622b --- /dev/null +++ b/MFDisplay/ModuleDefinitionComparer.cs @@ -0,0 +1,22 @@ +using MFDSettingsManager.Models; +using System.Collections.Generic; + +namespace MFDisplay +{ + /// + /// Comparer for Module Definitions + /// + public class ModuleDefinitionComparer : IComparer + { + /// + /// Main method + /// + /// + /// + /// + public int Compare(ModuleDefinition x, ModuleDefinition y) + { + return x.DisplayName.CompareTo(y.DisplayName); + } + } +} diff --git a/MFDisplay/Properties/AssemblyInfo.cs b/MFDisplay/Properties/AssemblyInfo.cs index be5505e..b4624a5 100644 --- a/MFDisplay/Properties/AssemblyInfo.cs +++ b/MFDisplay/Properties/AssemblyInfo.cs @@ -51,5 +51,5 @@ // 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("2.3.0.2")] -[assembly: AssemblyFileVersion("2.3.0.2")] +[assembly: AssemblyVersion("2.4.0.0")] +[assembly: AssemblyFileVersion("2.4.0.0")] diff --git a/MFDisplay/log4net.config b/MFDisplay/log4net.config index f7c8f9a..f920a1c 100644 --- a/MFDisplay/log4net.config +++ b/MFDisplay/log4net.config @@ -11,8 +11,8 @@ - - + + diff --git a/Setup/Setup.vdproj b/Setup/Setup.vdproj index caac53b..e50b92c 100644 --- a/Setup/Setup.vdproj +++ b/Setup/Setup.vdproj @@ -123,6 +123,12 @@ } "Entry" { + "MsmKey" = "8:_1D7297A66FF3447ABA362B950627D1E9" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { "MsmKey" = "8:_25251302214AA0BDFE8B4281E2837B69" "OwnerKey" = "8:_464470EC2C314E2AB03FD1632139BABF" "MsmSig" = "8:_UNDEFINED" @@ -814,6 +820,12 @@ "Entry" { "MsmKey" = "8:_C9EE0F80E73A0D85EF92B0346C02680A" + "OwnerKey" = "8:_1D7297A66FF3447ABA362B950627D1E9" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_C9EE0F80E73A0D85EF92B0346C02680A" "OwnerKey" = "8:_96F0F6C8787F40D385286407F0F5279C" "MsmSig" = "8:_UNDEFINED" } @@ -994,12 +1006,6 @@ "Entry" { "MsmKey" = "8:_UNDEFINED" - "OwnerKey" = "8:_C9EE0F80E73A0D85EF92B0346C02680A" - "MsmSig" = "8:_UNDEFINED" - } - "Entry" - { - "MsmKey" = "8:_UNDEFINED" "OwnerKey" = "8:_464470EC2C314E2AB03FD1632139BABF" "MsmSig" = "8:_UNDEFINED" } @@ -1447,6 +1453,18 @@ "OwnerKey" = "8:_3DBC4716EE6E2C83D1FD869B71CDEE75" "MsmSig" = "8:_UNDEFINED" } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_1D7297A66FF3447ABA362B950627D1E9" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_C9EE0F80E73A0D85EF92B0346C02680A" + "MsmSig" = "8:_UNDEFINED" + } } "Configurations" { @@ -1519,6 +1537,34 @@ { "CustomAction" { + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_1C2503B374024AE491877E2476726A9B" + { + "Name" = "8:Primary output from CustomActions (Active)" + "Condition" = "8:" + "Object" = "8:_1D7297A66FF3447ABA362B950627D1E9" + "FileType" = "3:1" + "InstallAction" = "3:2" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_DEEBCAB9_7511_4B59_89E9_42287F2D7F7A" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:/site=\"https://github.com/ScottyMac52/MFDisplay/releases\"" + } + "{4AA51A2D-7D85-4A59-BA75-B0809FC8B380}:_B6A899857F0D4664B92F836CFBAE8FB7" + { + "Name" = "8:Primary output from CustomActions (Active)" + "Condition" = "8:" + "Object" = "8:_1D7297A66FF3447ABA362B950627D1E9" + "FileType" = "3:1" + "InstallAction" = "3:1" + "Arguments" = "8:" + "EntryPoint" = "8:" + "Sequence" = "3:1" + "Identifier" = "8:_6D8365C9_33EA_4EE6_8DE6_B25BD1B9BB62" + "InstallerClass" = "11:TRUE" + "CustomActionData" = "8:/folder=\"[TARGETDIR]\\\"" + } } "DefaultFeature" { @@ -3426,7 +3472,7 @@ { "AssemblyRegister" = "3:1" "AssemblyIsInGAC" = "11:FALSE" - "AssemblyAsmDisplayName" = "8:MFDSettingsManager, Version=2.3.0.0, Culture=neutral, processorArchitecture=x86" + "AssemblyAsmDisplayName" = "8:MFDSettingsManager, Version=2.3.0.4, Culture=neutral, processorArchitecture=x86" "ScatterAssemblies" { "_C4DC3EF2B28BD12B944CD4F281C1AE06" @@ -4029,15 +4075,15 @@ { "Name" = "8:Microsoft Visual Studio" "ProductName" = "8:MFD4CTS" - "ProductCode" = "8:{A223A17A-279F-43F8-9FA2-4ED138B99F0E}" - "PackageCode" = "8:{8C20AA2A-6F25-4600-89E2-D887C779A21F}" + "ProductCode" = "8:{73C4AFEC-4895-448D-978A-AE218113D100}" + "PackageCode" = "8:{62FC3292-77EA-4A1E-AE90-56EE67480469}" "UpgradeCode" = "8:{684D58BF-80C4-4679-8A57-A5856787407F}" "AspNetVersion" = "8:4.0.30319.0" "RestartWWWService" = "11:FALSE" "RemovePreviousVersions" = "11:FALSE" "DetectNewerInstalledVersion" = "11:TRUE" "InstallAllUsers" = "11:TRUE" - "ProductVersion" = "8:2.3.0.2" + "ProductVersion" = "8:2.4" "Manufacturer" = "8:Vyper Industries" "ARPHELPTELEPHONE" = "8:" "ARPHELPLINK" = "8:https://github.com/ScottyMac52/MFDisplay/issues" @@ -4641,6 +4687,34 @@ { } } + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_1D7297A66FF3447ABA362B950627D1E9" + { + "SourcePath" = "8:..\\CustomActions\\obj\\Debug\\CustomActions.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_1E1F1E7898AD453989E7B4684362A4DE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{957B51AC-5241-4213-9553-7623BD0AA2C6}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_464470EC2C314E2AB03FD1632139BABF" { "SourcePath" = "8:..\\MFDisplay\\obj\\Debug\\MFD4CTS.exe"