From bf7d81527440e1bd5b195508e928052b39f3f943 Mon Sep 17 00:00:00 2001 From: Christian Resma Helle Date: Sun, 11 Nov 2012 00:06:25 +0100 Subject: [PATCH] introduced custom actions file to execute devenv.exe /setup as admin --- .../RESW File Code Generator.sln | 15 ++ .../InstallerClass.cs | 48 +++++++ .../ReswCodeGen.CustomActions/Program.cs | 10 ++ .../Properties/AssemblyInfo.cs | 36 +++++ .../ReswCodeGen.CustomActions.csproj | 67 +++++++++ .../ReswCodeGen.CustomActions/app.manifest | 55 +++++++ .../CodeDomCodeGenerator.cs | 4 +- .../ReswCodeGen.CustomTool/IResourceParser.cs | 31 ---- .../ReswCodeGen.CustomTool/ResourceParser.cs | 53 +++++++ .../ReswCodeGen.CustomTool.csproj | 1 + .../CodeGeneratorFactoryTests.cs | 2 +- .../ReswCodeGen.Tests/CodeGeneratorTests.cs | 2 +- .../ResourceParserErrorHandlingTests.cs | 61 ++++++++ .../ReswCodeGen.Tests/ResourceParserTests.cs | 23 --- .../Resources/ResourcesWithoutComments.resw | 132 +++++++++++++++++ .../Resources/ResourcesWithoutValues.resw | 136 ++++++++++++++++++ .../ReswCodeGen.Tests.csproj | 10 +- .../ReswCodeGen.Tests/Spikes.cs | 9 -- RESW File Code Generator/Setup/Setup.isl | 23 +-- RESW File Code Generator/Setup/Setup.isproj | 4 + 20 files changed, 645 insertions(+), 77 deletions(-) create mode 100644 RESW File Code Generator/ReswCodeGen.CustomActions/InstallerClass.cs create mode 100644 RESW File Code Generator/ReswCodeGen.CustomActions/Program.cs create mode 100644 RESW File Code Generator/ReswCodeGen.CustomActions/Properties/AssemblyInfo.cs create mode 100644 RESW File Code Generator/ReswCodeGen.CustomActions/ReswCodeGen.CustomActions.csproj create mode 100644 RESW File Code Generator/ReswCodeGen.CustomActions/app.manifest create mode 100644 RESW File Code Generator/ReswCodeGen.CustomTool/ResourceParser.cs create mode 100644 RESW File Code Generator/ReswCodeGen.Tests/ResourceParserErrorHandlingTests.cs create mode 100644 RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutComments.resw create mode 100644 RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutValues.resw delete mode 100644 RESW File Code Generator/ReswCodeGen.Tests/Spikes.cs diff --git a/RESW File Code Generator/RESW File Code Generator.sln b/RESW File Code Generator/RESW File Code Generator.sln index 6178820..8bf658f 100644 --- a/RESW File Code Generator/RESW File Code Generator.sln +++ b/RESW File Code Generator/RESW File Code Generator.sln @@ -6,6 +6,11 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReswCodeGen.Tests", "ReswCodeGen.Tests\ReswCodeGen.Tests.csproj", "{B56DDC92-E86D-46AA-BE28-7ACA670EE9CE}" EndProject Project("{6141683F-8A12-4E36-9623-2EB02B2C2303}") = "Setup", "Setup\Setup.isproj", "{F2C091E7-8B4A-4629-BF80-738294F5FFB8}" + ProjectSection(ProjectDependencies) = postProject + {4180087A-7F13-409B-AFE9-505371874A68} = {4180087A-7F13-409B-AFE9-505371874A68} + EndProjectSection +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReswCodeGen.CustomActions", "ReswCodeGen.CustomActions\ReswCodeGen.CustomActions.csproj", "{4180087A-7F13-409B-AFE9-505371874A68}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -45,6 +50,16 @@ Global {F2C091E7-8B4A-4629-BF80-738294F5FFB8}.Release|Any CPU.Build.0 = CD_ROM {F2C091E7-8B4A-4629-BF80-738294F5FFB8}.SingleImage|Any CPU.ActiveCfg = SingleImage {F2C091E7-8B4A-4629-BF80-738294F5FFB8}.SingleImage|Any CPU.Build.0 = SingleImage + {4180087A-7F13-409B-AFE9-505371874A68}.CD_ROM|Any CPU.ActiveCfg = Release|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.CD_ROM|Any CPU.Build.0 = Release|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.DVD-5|Any CPU.ActiveCfg = Debug|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.DVD-5|Any CPU.Build.0 = Debug|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.Release|Any CPU.Build.0 = Release|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.SingleImage|Any CPU.ActiveCfg = Release|Any CPU + {4180087A-7F13-409B-AFE9-505371874A68}.SingleImage|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/RESW File Code Generator/ReswCodeGen.CustomActions/InstallerClass.cs b/RESW File Code Generator/ReswCodeGen.CustomActions/InstallerClass.cs new file mode 100644 index 0000000..52da48b --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.CustomActions/InstallerClass.cs @@ -0,0 +1,48 @@ +using System; +using System.Configuration.Install; +using System.Diagnostics; +using System.Windows.Forms; +using Microsoft.Win32; + +namespace ReswCodeGen.CustomActions +{ + public class InstallerClass : Installer + { + protected override void OnAfterInstall(System.Collections.IDictionary savedState) + { + SetupVisualStudio(); + } + + public static void SetupVisualStudio() + { + string devenvPath; + using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0")) + { + if (key == null) + { + MessageBox.Show("Unable to locate devenv.exe", "Error"); + return; + } + devenvPath = string.Format("{0}devenv.exe", key.GetValue("InstallDir", string.Empty)); + } + + var proc = new ProcessStartInfo + { + UseShellExecute = true, + WorkingDirectory = Environment.CurrentDirectory, + FileName = devenvPath, + Arguments = "/setup", + Verb = "runas" + }; + try + { + var process = Process.Start(proc); + process.WaitForExit(); + } + catch + { + MessageBox.Show("Unable to execute devenv.exe /setup", "Error"); + } + } + } +} diff --git a/RESW File Code Generator/ReswCodeGen.CustomActions/Program.cs b/RESW File Code Generator/ReswCodeGen.CustomActions/Program.cs new file mode 100644 index 0000000..dfecc47 --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.CustomActions/Program.cs @@ -0,0 +1,10 @@ +namespace ReswCodeGen.CustomActions +{ + public class Program + { + static void Main(string[] args) + { + InstallerClass.SetupVisualStudio(); + } + } +} diff --git a/RESW File Code Generator/ReswCodeGen.CustomActions/Properties/AssemblyInfo.cs b/RESW File Code Generator/ReswCodeGen.CustomActions/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..e91086d --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.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("ReswCodeGen.CustomActions")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ReswCodeGen.CustomActions")] +[assembly: AssemblyCopyright("Copyright © 2012")] +[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("a652dc5d-3c03-4fea-8565-b02c55bd4e25")] + +// 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/RESW File Code Generator/ReswCodeGen.CustomActions/ReswCodeGen.CustomActions.csproj b/RESW File Code Generator/ReswCodeGen.CustomActions/ReswCodeGen.CustomActions.csproj new file mode 100644 index 0000000..77e0aca --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.CustomActions/ReswCodeGen.CustomActions.csproj @@ -0,0 +1,67 @@ + + + + + Debug + AnyCPU + {4180087A-7F13-409B-AFE9-505371874A68} + WinExe + Properties + ReswCodeGen.CustomActions + ReswCodeGen.CustomActions + v4.5 + 512 + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + app.manifest + + + + + + + + + + + + + + + Component + + + + + + + + + + \ No newline at end of file diff --git a/RESW File Code Generator/ReswCodeGen.CustomActions/app.manifest b/RESW File Code Generator/ReswCodeGen.CustomActions/app.manifest new file mode 100644 index 0000000..eb3b75a --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.CustomActions/app.manifest @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/RESW File Code Generator/ReswCodeGen.CustomTool/CodeDomCodeGenerator.cs b/RESW File Code Generator/ReswCodeGen.CustomTool/CodeDomCodeGenerator.cs index c345906..d14a5bd 100644 --- a/RESW File Code Generator/ReswCodeGen.CustomTool/CodeDomCodeGenerator.cs +++ b/RESW File Code Generator/ReswCodeGen.CustomTool/CodeDomCodeGenerator.cs @@ -57,7 +57,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool var resources = ResourceParser.Parse(); foreach (var item in resources) { - if (item.Name.Contains(".")) + if (string.IsNullOrEmpty(item.Name) || item.Name.Contains(".")) continue; var property = new CodeMemberProperty @@ -69,7 +69,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool }; property.Comments.Add(new CodeCommentStatement("", true)); - property.Comments.Add(new CodeCommentStatement("Localized resource similar to \"" + item.Value + "\"", true)); + property.Comments.Add(new CodeCommentStatement("Localized resource similar to \"" + (item.Value ?? item.Name) + "\"", true)); property.Comments.Add(new CodeCommentStatement("", true)); property.GetStatements.Add( new CodeMethodReturnStatement( diff --git a/RESW File Code Generator/ReswCodeGen.CustomTool/IResourceParser.cs b/RESW File Code Generator/ReswCodeGen.CustomTool/IResourceParser.cs index 13d3523..e6e7ee9 100644 --- a/RESW File Code Generator/ReswCodeGen.CustomTool/IResourceParser.cs +++ b/RESW File Code Generator/ReswCodeGen.CustomTool/IResourceParser.cs @@ -1,6 +1,4 @@ using System.Collections.Generic; -using System.Linq; -using System.Xml.Linq; namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool { @@ -9,33 +7,4 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool string ReswFileContents { get; set; } List Parse(); } - - public class ResourceParser : IResourceParser - { - public ResourceParser(string reswFileContents) - { - ReswFileContents = reswFileContents; - } - - public string ReswFileContents { get; set; } - - public List Parse() - { - var doc = XDocument.Parse(ReswFileContents); - - var list = new List(); - - foreach (var element in doc.Descendants("data")) - { - list.Add(new ResourceItem - { - Name = element.Attribute("name").Value, - Value = element.Descendants("value").First().Value, - Comment = element.Descendants("comment").First().Value - }); - } - - return list; - } - } } \ No newline at end of file diff --git a/RESW File Code Generator/ReswCodeGen.CustomTool/ResourceParser.cs b/RESW File Code Generator/ReswCodeGen.CustomTool/ResourceParser.cs new file mode 100644 index 0000000..8cc8c11 --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.CustomTool/ResourceParser.cs @@ -0,0 +1,53 @@ +using System.Collections.Generic; +using System.Linq; +using System.Xml.Linq; + +namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool +{ + public class ResourceParser : IResourceParser + { + public ResourceParser(string reswFileContents) + { + ReswFileContents = reswFileContents; + } + + public string ReswFileContents { get; set; } + + public List Parse() + { + var doc = XDocument.Parse(ReswFileContents); + + var list = new List(); + + foreach (var element in doc.Descendants("data")) + { + if (element.Attributes().All(c => c.Name != "name")) + continue; + + var item = new ResourceItem(); + + var nameAttribute = element.Attribute("name"); + if (nameAttribute != null) + item.Name = nameAttribute.Value; + + if (element.Descendants().Any(c => c.Name == "value")) + { + var valueElement = element.Descendants("value").FirstOrDefault(); + if (valueElement != null) + item.Value = valueElement.Value; + } + + if (element.Descendants().Any(c => c.Name == "comment")) + { + var commentElement = element.Descendants("comment").FirstOrDefault(); + if (commentElement != null) + item.Comment = commentElement.Value; + } + + list.Add(item); + } + + return list; + } + } +} diff --git a/RESW File Code Generator/ReswCodeGen.CustomTool/ReswCodeGen.CustomTool.csproj b/RESW File Code Generator/ReswCodeGen.CustomTool/ReswCodeGen.CustomTool.csproj index 6471799..81774e9 100644 --- a/RESW File Code Generator/ReswCodeGen.CustomTool/ReswCodeGen.CustomTool.csproj +++ b/RESW File Code Generator/ReswCodeGen.CustomTool/ReswCodeGen.CustomTool.csproj @@ -59,6 +59,7 @@ + diff --git a/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorFactoryTests.cs b/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorFactoryTests.cs index bf7d5fd..31a7f7e 100644 --- a/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorFactoryTests.cs +++ b/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorFactoryTests.cs @@ -4,7 +4,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool.Tests { [TestClass] - [DeploymentItem("Resources/Resources.resw")] + [DeploymentItem("Resources/Valid/Resources.resw")] public class CodeGeneratorFactoryTests { private string reswFileContents; diff --git a/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorTests.cs b/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorTests.cs index 92ac57f..38bf893 100644 --- a/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorTests.cs +++ b/RESW File Code Generator/ReswCodeGen.Tests/CodeGeneratorTests.cs @@ -6,7 +6,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool.Tests { [TestClass] - [DeploymentItem("Resources/Resources.resw")] + [DeploymentItem("Resources/Valid/Resources.resw")] public class CodeGeneratorTests { private string reswFileContents; diff --git a/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserErrorHandlingTests.cs b/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserErrorHandlingTests.cs new file mode 100644 index 0000000..afe4fdc --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserErrorHandlingTests.cs @@ -0,0 +1,61 @@ +using System.IO; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool.Tests +{ + [TestClass] + [DeploymentItem("Resources/ResourcesWithoutValues.resw")] + [DeploymentItem("Resources/ResourcesWithoutComments.resw")] + public class ResourceParserErrorHandlingTests + { + [TestMethod] + public void ParseHandlesMissingResourceItemValues() + { + var reswFileContents = File.ReadAllText("ResourcesWithoutValues.resw"); + var target = new ResourceParser(reswFileContents); + var actual = target.Parse(); + + Assert.IsNotNull(actual); + CollectionAssert.AllItemsAreNotNull(actual); + } + + [TestMethod] + public void ParseWithMissingResourceItemValuesSetsValueNull() + { + var reswFileContents = File.ReadAllText("ResourcesWithoutValues.resw"); + var target = new ResourceParser(reswFileContents); + var actual = target.Parse(); + + Assert.IsNotNull(actual); + CollectionAssert.AllItemsAreNotNull(actual); + + foreach (var item in actual) + Assert.IsTrue(string.IsNullOrEmpty(item.Value)); + } + + [TestMethod] + public void ParseHandlesMissingResourceItemComments() + { + var reswFileContents = File.ReadAllText("ResourcesWithoutComments.resw"); + var target = new ResourceParser(reswFileContents); + var actual = target.Parse(); + + Assert.IsNotNull(actual); + CollectionAssert.AllItemsAreNotNull(actual); + } + + [TestMethod] + public void ParseWithMissingResourceItemCommentsSetsCommentsNull() + { + var reswFileContents = File.ReadAllText("ResourcesWithoutComments.resw"); + var target = new ResourceParser(reswFileContents); + var actual = target.Parse(); + + Assert.IsNotNull(actual); + CollectionAssert.AllItemsAreNotNull(actual); + + foreach (var item in actual) + Assert.IsTrue(string.IsNullOrEmpty(item.Comment)); + } + } +} \ No newline at end of file diff --git a/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserTests.cs b/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserTests.cs index 06bb83a..38f54e6 100644 --- a/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserTests.cs +++ b/RESW File Code Generator/ReswCodeGen.Tests/ResourceParserTests.cs @@ -1,6 +1,3 @@ -using System.Collections; -using System.Collections.Generic; -using System.Collections.Specialized; using System.IO; using System.Linq; using System.Xml.Linq; @@ -42,26 +39,6 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool.Tests Assert.AreNotEqual(0, resourcs.Count()); } - [TestMethod] - public void CanParseTestReswFileContentsIntoResourceItems() - { - var doc = XDocument.Parse(reswFileContents); - - var list = new List(); - - foreach (var element in doc.Descendants("data")) - { - list.Add(new ResourceItem - { - Name = element.Attribute("name").Value, - Value = element.Descendants("value").First().Value, - Comment = element.Descendants("comment").First().Value - }); - } - - CollectionAssert.AllItemsAreNotNull(list); - } - [TestMethod] public void ConstructorSetsReswFileContents() { diff --git a/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutComments.resw b/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutComments.resw new file mode 100644 index 0000000..588f486 --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutComments.resw @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Test 1 value + + + Test 2 value + + + Test 3 value + + + TestControl.Text value + + \ No newline at end of file diff --git a/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutValues.resw b/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutValues.resw new file mode 100644 index 0000000..6625d9c --- /dev/null +++ b/RESW File Code Generator/ReswCodeGen.Tests/Resources/ResourcesWithoutValues.resw @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + Test 1 comment + + + + Test 2 comment + + + + Test 3 comment + + + + TestControl.Test comment + + \ No newline at end of file diff --git a/RESW File Code Generator/ReswCodeGen.Tests/ReswCodeGen.Tests.csproj b/RESW File Code Generator/ReswCodeGen.Tests/ReswCodeGen.Tests.csproj index 73b3457..dba6357 100644 --- a/RESW File Code Generator/ReswCodeGen.Tests/ReswCodeGen.Tests.csproj +++ b/RESW File Code Generator/ReswCodeGen.Tests/ReswCodeGen.Tests.csproj @@ -57,8 +57,8 @@ + - @@ -69,6 +69,14 @@ + + Designer + PreserveNewest + + + Designer + PreserveNewest + diff --git a/RESW File Code Generator/ReswCodeGen.Tests/Spikes.cs b/RESW File Code Generator/ReswCodeGen.Tests/Spikes.cs deleted file mode 100644 index 896c7b0..0000000 --- a/RESW File Code Generator/ReswCodeGen.Tests/Spikes.cs +++ /dev/null @@ -1,9 +0,0 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool.Tests -{ - [TestClass] - public class Spikes - { - } -} \ No newline at end of file diff --git a/RESW File Code Generator/Setup/Setup.isl b/RESW File Code Generator/Setup/Setup.isl index 489ce17..d3b32f5 100644 --- a/RESW File Code Generator/Setup/Setup.isl +++ b/RESW File Code Generator/Setup/Setup.isl @@ -343,6 +343,7 @@ ISDotNetInstallerArgsRollback ISX_DEFAULTCOMPONENT{C30F75D3-90B0-458C-820A-E2735DE9256F}GlobalAssemblyCache217/LogFile=/LogFile=/LogFile=/LogFile= ISX_DEFAULTCOMPONENT1{941F8DF4-5233-4CF3-BD0A-2232A782181C}INSTALLDIR217/LogFile=/LogFile=/LogFile=/LogFile= + ReswCodeGen.CustomActions.Primary_output{EAFEBCD5-9627-4A2D-8447-31F31BCBCBE6}INSTALLDIR2reswcodegen.customactions.pr17/LogFile=/LogFile=/LogFile=/LogFile= ReswCodeGen.CustomTool.Primary_output{DC17C7A5-6FF1-4B58-90AD-C449CDB05EAD}INSTALLDIR2reswcodegen.customtool.prima52/LogFile=/LogFile=/LogFile=/LogFile= ReswCodeGen.CustomTool.Primary_output2{1DA37D81-CD1F-4FA8-A520-B11B410E3B37}GlobalAssemblyCache2reswcodegen.customtool.prima252/LogFile=/LogFile=/LogFile=/LogFile= @@ -1064,6 +1065,7 @@ Target ExtendedType ISComments + DenenvSetup3154reswcodegen.customactions.pr ISPreventDowngrade19[IS_PREVENT_DOWNGRADE_EXIT]Exits install when a newer version of this product is found ISPrint1SetAllUsers.dllPrintScrollableTextPrints the contents of a ScrollableText control on a dialog. ISRunSetupTypeAddLocalEvent1ISExpHlp.dllRunSetupTypeAddLocalEventRun the AddLocal events associated with the Next button on the Setup Type dialog. @@ -1071,7 +1073,6 @@ ISSelfRegisterFiles3073ISSELFREG.DLLISSelfRegisterFiles ISSelfRegisterFinalize1ISSELFREG.DLLISSelfRegisterFinalize ISUnSelfRegisterFiles3073ISSELFREG.DLLISUnSelfRegisterFiles - NewCustomAction11122IDE[IDE]devenv.exe /setup SetARPINSTALLLOCATION51ARPINSTALLLOCATION[INSTALLDIR] SetAllUsersProfileNT51ALLUSERSPROFILE[%SystemRoot]\Profiles\All Users ShowMsiLog226SystemFolder[SystemFolder]notepad.exe "[MsiLogFileLocation]"Shows Property-driven MSI Log @@ -1873,6 +1874,7 @@ Component_ AlwaysInstallISX_DEFAULTCOMPONENT AlwaysInstallISX_DEFAULTCOMPONENT1 + AlwaysInstallReswCodeGen.CustomActions.Primary_output AlwaysInstallReswCodeGen.CustomTool.Primary_output AlwaysInstallReswCodeGen.CustomTool.Primary_output2 @@ -1889,6 +1891,7 @@ ISBuildSourcePath ISAttributes ISComponentSubFolder_ + reswcodegen.customactions.prReswCodeGen.CustomActions.Primary_outputReswCodeGen.CustomActions.Primary output01<ReswCodeGen.CustomActions>|Built3 reswcodegen.customtool.primaReswCodeGen.CustomTool.Primary_outputReswCodeGen.CustomTool.Primary output001<ReswCodeGen.CustomTool>|Built3 reswcodegen.customtool.prima2ReswCodeGen.CustomTool.Primary_output2ReswCodeGen.CustomTool.Primary output001<ReswCodeGen.CustomTool>|Built3 @@ -2150,6 +2153,7 @@ Miscellaneous ISX_DEFAULTCOMPONENT_35E60FAB_A173_41F5_A1EC_7BCCE932412C_FILTER ISX_DEFAULTCOMPONENT1_489A804A_6D51_40F1_8AC5_810DEED8A068_FILTER + ReswCodeGen.CustomActions.Primary_output_727A98DF_AAF3_4280_9A5A_31CBEA1BD501_FILTER ReswCodeGen.CustomTool.Primary_output_002FDE30_5929_4810_8173_8FE579BBEDB5_FILTER ReswCodeGen.CustomTool.Primary_output2_1C371698_566F_425C_972A_9F87926B1656_FILTER @@ -2469,6 +2473,7 @@ ISProjectDataFolder1 ISProjectFolder1 ProgramFilesFolder1 + ReswCodeGen.CustomActionsReswCodeGen.CustomActions\ReswCodeGen.CustomActions.csproj2 ReswCodeGen.CustomToolReswCodeGen.CustomTool\ReswCodeGen.CustomTool.csproj2 SystemFolder1 WindowsFolder1 @@ -2531,11 +2536,11 @@ DotNetBuildConfiguration MsiCommandLine ISSetupPrerequisiteLocation - CD_ROMExpress<ISProjectDataFolder>Default0103302Intel10330650020480MediaLocationhttp://758053 + CD_ROMExpress<ISProjectDataFolder>Default0103301Intel10330650020480MediaLocationhttp://758053 CustomExpress<ISProjectDataFolder>Default2103302Intel10330100010240MediaLocationhttp://758053 DVD-10Express<ISProjectDataFolder>Default3103302Intel103308.75120480MediaLocationhttp://758053 DVD-18Express<ISProjectDataFolder>Default3103302Intel1033015.83120480MediaLocationhttp://758053 - DVD-5Express<ISProjectDataFolder>Default3103302Intel103304.38120480MediaLocationhttp://758053 + DVD-5Express<ISProjectDataFolder>Default3103301Intel103304.38120480MediaLocationhttp://758053 DVD-9Express<ISProjectDataFolder>Default3103302Intel103307.95120480MediaLocationhttp://758053 SingleImageExpress<ISProjectDataFolder>PackageName1103301Intel103300000MediaLocationhttp://1085733 WebDeploymentExpress<ISProjectDataFolder>PackageName4103321Intel103300000MediaLocationhttp://1249413 @@ -2579,11 +2584,11 @@ MsiEngineVersion WinMsi30Url CertPassword - CD_ROMExpress0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 + CD_ROMExpress0http://0installinstall[LocalAppDataFolder]Downloaded Installations1http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 CustomExpress0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 DVD-10Express0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 DVD-18Express0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 - DVD-5Express0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 + DVD-5Express0http://0installinstall[LocalAppDataFolder]Downloaded Installations1http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 DVD-9Express0http://0installinstall[LocalAppDataFolder]Downloaded Installations0http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 SingleImageExpress0http://0installinstall[LocalAppDataFolder]Downloaded Installations1http://www.installengine.com/Msiengine20http://www.installengine.com/Msiengine200http://www.installengine.com/cert05/isengine03http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 WebDeploymentExpress0http://0setupDefault[LocalAppDataFolder]Downloaded Installations2http://www.Installengine.com/Msiengine20http://www.Installengine.com/Msiengine200http://www.installengine.com/cert05/isengine23http://www.installengine.com/cert05/dotnetfx010333http://www.installengine.com/Msiengine30 @@ -3880,7 +3885,7 @@ IDS__TargetReq_DESC_RAM1033The amount of RAM is not adequate for running [ProductName].01168132439 IDS__TargetReq_DESC_RESOLUTION1033The screen resolution is not adequate for running [ProductName].01168132439 ID_STRING1103301168134487 - ID_STRING21033http://www.ChristianResmaHelle.com01302336749 + ID_STRING21033http://reswcodegen.codeplex.com01436564087 ID_STRING31033Christian Resma Helle01302336749 IIDS_UITEXT_FeatureUninstalled1033This feature will remain uninstalled.01168132439 @@ -4027,6 +4032,7 @@ CreateFolders3700CreateFolders CreateShortcuts4500CreateShortcuts DeleteServicesVersionNT2000DeleteServices + DenenvSetupNot Installed6405 DuplicateFiles4210DuplicateFiles FileCost900FileCost FindRelatedProductsNOT ISSETUPDRIVEN420FindRelatedProducts @@ -4049,7 +4055,6 @@ MsiConfigureServicesVersionMsi >= "5.00"5850MSI5 MsiConfigureServices MsiPublishAssemblies6250MsiPublishAssemblies MsiUnpublishAssemblies1750MsiUnpublishAssemblies - NewCustomAction1Not Installed6405 PatchFiles4090PatchFiles ProcessComponents1600ProcessComponents PublishComponents6200PublishComponents @@ -4109,7 +4114,7 @@ QwBEAF8AUgBPAE0AAQBFAHgAcAByAGUAcwBzAA== DefaultProductConfigurationExpress - EnableSwidtag1 + EnableSwidtag0 ISCompilerOption_CompileBeforeBuild1 ISCompilerOption_Debug0 ISCompilerOption_IncludePath @@ -4123,7 +4128,7 @@ QwBEAF8AUgBPAE0AAQBFAHgAcAByAGUAcwBzAA== ISThemeInstallShield Blue.theme ISUSLock{A7B3F628-DE1F-49AA-B557-06DD8E61CDB2} ISUSSignature{573D3FCA-5556-4921-822E-B0FD4BB814AB} - ISVisitedViewsviewAssistant,viewRegistry,viewProject,viewRelease,viewCustomActions,viewISToday,viewUpdateService,viewRealSetupDesign,viewSetupDesign,viewSetupTypes,viewUpgradePaths,viewObjects,viewDependencies,viewAppFiles,viewComponentServices,viewShortcuts,viewSupportFiles,viewInstallScriptStd,viewSystemSearch + ISVisitedViewsviewAssistant,viewRegistry,viewProject,viewRelease,viewCustomActions,viewISToday,viewUpdateService,viewRealSetupDesign,viewSetupDesign,viewSetupTypes,viewUpgradePaths,viewObjects,viewDependencies,viewAppFiles,viewComponentServices,viewShortcuts,viewSupportFiles,viewInstallScriptStd,viewSystemSearch,viewAppV,viewSQLServer,viewCE,viewFeatureFiles,viewDesignPatches Limited1 LockPermissionMode1 MsiExecCmdLineOptions diff --git a/RESW File Code Generator/Setup/Setup.isproj b/RESW File Code Generator/Setup/Setup.isproj index 355b962..35cd682 100644 --- a/RESW File Code Generator/Setup/Setup.isproj +++ b/RESW File Code Generator/Setup/Setup.isproj @@ -32,5 +32,9 @@ ReswCodeGen.CustomTool {27E6A696-F14D-43F0-B3CB-5FAB2BE385D0} + + ReswCodeGen.CustomActions + {4180087A-7F13-409B-AFE9-505371874A68} +