diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDirectoryTreeNode.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDirectoryTreeNode.cs index 5347fabc77..d8f31b74ca 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDirectoryTreeNode.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixDirectoryTreeNode.cs @@ -21,6 +21,7 @@ namespace ICSharpCode.WixBinding ContextmenuAddinTreePath = "/AddIns/WixBinding/PackageFilesView/ContextMenu/DirectoryTreeNode"; SetIcon(closedImage); Refresh(); + sortOrder = 0; } public override void Refresh() diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixPackageFilesTreeView.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixPackageFilesTreeView.cs index 5217464981..05bad8c077 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixPackageFilesTreeView.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixPackageFilesTreeView.cs @@ -80,9 +80,8 @@ namespace ICSharpCode.WixBinding public void AddDirectories(WixDirectoryElement[] directories) { foreach (WixDirectoryElement directory in directories) { - AddNode(null, directory); + WixTreeNodeBuilder.AddNode(this, directory); } - ExpandAll(); } /// @@ -103,9 +102,17 @@ namespace ICSharpCode.WixBinding /// root node. public void AddElement(XmlElement element) { - ExtTreeNode selectedNode = (ExtTreeNode)SelectedNode; - ExtTreeNode addedNode = AddNode(selectedNode, element); - addedNode.Expand(); + WixTreeNode selectedNode = (WixTreeNode)SelectedNode; + if (selectedNode == null) { + WixTreeNodeBuilder.AddNode(this, element); + } else { + if (selectedNode.IsInitialized) { + WixTreeNodeBuilder.AddNode(selectedNode, element); + } else { + // Initializing the node will add all the child elements. + selectedNode.PerformInitialization(); + } + } } /// @@ -144,52 +151,7 @@ namespace ICSharpCode.WixBinding OnSelectedElementChanged(); } } - - /// - /// Adds a new tree node containing the xml element to the specified - /// nodes collection. - /// - ExtTreeNode AddNode(ExtTreeNode parentNode, XmlElement element) - { - ExtTreeNode node = CreateNode(element); - if (parentNode != null) { - node.AddTo(parentNode); - } else { - node.AddTo(this); - } - AddNodes(node, element.ChildNodes); - return node; - } - - /// - /// Adds all the elements. - /// - void AddNodes(ExtTreeNode parentNode, XmlNodeList nodes) - { - foreach (XmlNode childNode in nodes) { - XmlElement childElement = childNode as XmlElement; - if (childElement != null) { - AddNode(parentNode, childElement); - } - } - } - - /// - /// Creates a tree node from the specified element. - /// - ExtTreeNode CreateNode(XmlElement element) - { - switch (element.LocalName) { - case "Directory": - return new WixDirectoryTreeNode((WixDirectoryElement)element); - case "Component": - return new WixComponentTreeNode((WixComponentElement)element); - case "File": - return new WixFileTreeNode((WixFileElement)element); - } - return new UnknownWixTreeNode(element); - } - + void OnSelectedElementChanged() { if (SelectedElementChanged != null) { @@ -208,15 +170,23 @@ namespace ICSharpCode.WixBinding /// /// Finds the node that represents the specified xml element. /// + /// + /// This currently looks in nodes that have been opened. Really it + /// should explore the entire tree, but child nodes are only added if the + /// node is expanded. + /// WixTreeNode FindNode(TreeNodeCollection nodes, XmlElement element) { - foreach (WixTreeNode node in nodes) { - if (NodeHasElement(node, element)) { - return node; - } else { - WixTreeNode foundNode = FindNode(node.Nodes, element); - if (foundNode != null) { - return foundNode; + foreach (ExtTreeNode node in nodes) { + WixTreeNode wixTreeNode = node as WixTreeNode; + if (wixTreeNode != null) { + if (NodeHasElement(wixTreeNode, element)) { + return wixTreeNode; + } else { + WixTreeNode foundNode = FindNode(wixTreeNode.Nodes, element); + if (foundNode != null) { + return foundNode; + } } } } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNode.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNode.cs index 33fcb0bae6..87b7dd11cf 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNode.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNode.cs @@ -19,10 +19,17 @@ namespace ICSharpCode.WixBinding public class WixTreeNode : ExtTreeNode, IOwnerState { XmlElement element; + ExtTreeNode dummyChildNode = null; public WixTreeNode(XmlElement element) { this.element = element; + sortOrder = 10; + + if (element.HasChildNodes) { + dummyChildNode = new ExtTreeNode(); + dummyChildNode.AddTo(this); + } } public Enum InternalState { @@ -31,6 +38,16 @@ namespace ICSharpCode.WixBinding } } + /// + /// Gets whether this tree node has been initialized. If it has been + /// initialized then all the child nodes have been added to this node. + /// + public bool IsInitialized { + get { + return isInitialized; + } + } + /// /// Can delete all Wix tree nodes. /// @@ -60,5 +77,20 @@ namespace ICSharpCode.WixBinding return (WixPackageFilesTreeView)TreeView; } } + + /// + /// Adds child nodes to this tree node. + /// + protected override void Initialize() + { + base.Initialize(); + + if (dummyChildNode != null) { + Nodes.Remove(dummyChildNode); + dummyChildNode = null; + } + + WixTreeNodeBuilder.AddNodes(this, element.ChildNodes); + } } } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNodeBuilder.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNodeBuilder.cs new file mode 100644 index 0000000000..65ca26490f --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/Gui/WixTreeNodeBuilder.cs @@ -0,0 +1,73 @@ +// +// +// +// +// $Revision$ +// + +using ICSharpCode.SharpDevelop.Gui; +using System; +using System.Xml; + +namespace ICSharpCode.WixBinding +{ + /// + /// Creates and adds WixTreeNodes to a tree view. + /// + public class WixTreeNodeBuilder + { + WixTreeNodeBuilder() + { + } + + /// + /// Adds a new tree node containing the xml element to the specified + /// nodes collection. + /// + public static ExtTreeNode AddNode(ExtTreeNode parentNode, XmlElement element) + { + ExtTreeNode node = CreateNode(element); + node.AddTo(parentNode); + return node; + } + + /// + /// Adds a new tree node to the tree view. + /// + public static ExtTreeNode AddNode(ExtTreeView treeView, XmlElement element) + { + ExtTreeNode node = CreateNode(element); + node.AddTo(treeView); + return node; + } + + /// + /// Adds all the elements. + /// + public static void AddNodes(ExtTreeNode parentNode, XmlNodeList nodes) + { + foreach (XmlNode childNode in nodes) { + XmlElement childElement = childNode as XmlElement; + if (childElement != null) { + AddNode(parentNode, childElement); + } + } + } + + /// + /// Creates a tree node from the specified element. + /// + static ExtTreeNode CreateNode(XmlElement element) + { + switch (element.LocalName) { + case "Directory": + return new WixDirectoryTreeNode((WixDirectoryElement)element); + case "Component": + return new WixComponentTreeNode((WixComponentElement)element); + case "File": + return new WixFileTreeNode((WixFileElement)element); + } + return new UnknownWixTreeNode(element); + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/ShortFileName.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/ShortFileName.cs index b43b75bb44..8accf363ad 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/ShortFileName.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/ShortFileName.cs @@ -14,13 +14,14 @@ namespace ICSharpCode.WixBinding /// /// Utility class that converts from long filenames to DOS 8.3 filenames based on the /// rough algorithm outlined here: http://support.microsoft.com/kb/142982/EN-US/ + /// apart from using an underscore instead of a '~'. /// public sealed class ShortFileName { const int MaximumFileNameWithoutExtensionLength = 8; /// - /// The filename length to use when appending "~1" to it. + /// The filename length to use when appending "_1" to it. /// const int FileNameWithoutExtensionTruncatedLength = 6; @@ -97,7 +98,7 @@ namespace ICSharpCode.WixBinding } /// - /// Truncates the filename start and adds "~N" where N produces a filename that + /// Truncates the filename start and adds "_N" where N produces a filename that /// does not exist. /// static string GetTruncatedFileName(string fileNameStart, string extension, FileNameExists getFileNameExists) @@ -112,7 +113,7 @@ namespace ICSharpCode.WixBinding fileNameStart = fileNameStart.Substring(0, fileNameStart.Length - 1); divisor *= divisor; } - truncatedFileName = String.Concat(fileNameStart, "~", count.ToString(), extension).ToUpperInvariant(); + truncatedFileName = String.Concat(fileNameStart, "_", count.ToString(), extension).ToUpperInvariant(); } while (getFileNameExists(truncatedFileName)); return truncatedFileName; diff --git a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElement.cs b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElement.cs index 6598b3df58..c07548fcce 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElement.cs +++ b/src/AddIns/BackendBindings/WixBinding/Project/Src/WixDirectoryElement.cs @@ -67,8 +67,17 @@ namespace ICSharpCode.WixBinding SetAttribute("SourceName", value); } } - - public string DirectoryName { + + public string LongName { + get { + return GetAttribute("LongName"); + } + set { + SetAttribute("LongName", value); + } + } + + public string ShortName { get { return GetAttribute("Name"); } @@ -76,5 +85,85 @@ namespace ICSharpCode.WixBinding SetAttribute("Name", value); } } + + /// + /// Gets the directory name. + /// + /// + /// Returns the long name if defined, otherwise the name. If the directory Id + /// is a special case (e.g. "ProgramFilesFolder") it returns this id slightly + /// modified (e.g. "Program Files"). + /// + public string DirectoryName { + get { + string name = GetSystemDirectory(Id); + if (name != null) { + return name; + } + name = LongName; + if (name.Length > 0) { + return name; + } + return ShortName; + } + } + + /// + /// Returns whether the specified name maps to a system directory. + /// + public static string GetSystemDirectory(string id) + { + switch (id) { + case "ProgramFilesFolder": + return "Program Files"; + case "AdminToolsFolder": + return "Admin Tools"; + case "AppDataFolder": + return "App Data"; + case "CommonAppDataFolder": + return "Common App Data"; + case "CommonFiles64Folder": + return "Common Files 64"; + case "CommonFilesFolder": + return "Common Files"; + case "DesktopFolder": + return "Desktop"; + case "FavoritesFolder": + return "Favorites"; + case "FontsFolder": + return "Fonts"; + case "LocalAppDataFolder": + return "Local App Data"; + case "MyPicturesFolder": + return "My Pictures"; + case "PersonalFolder": + return "Personal"; + case "ProgramFiles64Folder": + return "Program Files 64"; + case "ProgramMenuFolder": + return "Program Menu"; + case "SendToFolder": + return "Send To"; + case "StartMenuFolder": + return "Start Menu"; + case "StartupFolder": + return "Startup"; + case "System16Folder": + return "System 16"; + case "System64Folder": + return "System 64"; + case "SystemFolder": + return "System"; + case "TempFolder": + return "Temp"; + case "TemplateFolder": + return "Templates"; + case "WindowsFolder": + return "Windows"; + case "WindowsVolume": + return "Windows Volume"; + } + return null; + } } } diff --git a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj index ec6ec7ec1b..b2674ad56a 100644 --- a/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Project/WixBinding.csproj @@ -126,6 +126,7 @@ + diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Document/ChildDirectoriesTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/Document/ChildDirectoriesTestFixture.cs index 4bf1522793..2331d708a7 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/Document/ChildDirectoriesTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/Document/ChildDirectoriesTestFixture.cs @@ -57,6 +57,12 @@ namespace WixBinding.Tests.Document { Assert.AreEqual("MyAppSrc", myAppDirectory.SourceName); } + + [Test] + public void MyAppDirectoryName() + { + Assert.AreEqual("My Application", myAppDirectory.DirectoryName); + } [Test] public void ProgramFilesDirectoryHasOneChildDirectory() @@ -70,10 +76,16 @@ namespace WixBinding.Tests.Document Assert.AreEqual("Test", testDirectory.Id); } + [Test] + public void TestDirectoryName() + { + Assert.AreEqual("App", testDirectory.DirectoryName); + } + [Test] public void ProgramFilesDirectoryName() { - Assert.AreEqual("PFiles", programFilesDirectory.DirectoryName); + Assert.AreEqual("Program Files", programFilesDirectory.DirectoryName); } string GetWixXml() @@ -86,11 +98,11 @@ namespace WixBinding.Tests.Document "\t Id='????????-????-????-????-????????????'>\r\n" + "\t\t\r\n" + "\t\t\r\n" + - "\t\t\t\r\n" + - "\t\t\t\t\r\n" + + "\t\t\t\r\n" + + "\t\t\t\t\r\n" + "\t\t\t\t\r\n" + "\t\t\t\r\n" + - "\t\t\t\r\n" + + "\t\t\t\r\n" + "\t\t\r\n" + "\t\r\n" + ""; diff --git a/src/AddIns/BackendBindings/WixBinding/Test/Document/DirectoryNameTests.cs b/src/AddIns/BackendBindings/WixBinding/Test/Document/DirectoryNameTests.cs new file mode 100644 index 0000000000..6dddcbd61c --- /dev/null +++ b/src/AddIns/BackendBindings/WixBinding/Test/Document/DirectoryNameTests.cs @@ -0,0 +1,155 @@ +// +// +// +// +// $Revision$ +// + +using ICSharpCode.WixBinding; +using NUnit.Framework; +using System; + +namespace WixBinding.Tests.Document +{ + [TestFixture] + public class DirectoryNameTests + { + [Test] + public void AdminToolsFolder() + { + Assert.AreEqual("Admin Tools", WixDirectoryElement.GetSystemDirectory("AdminToolsFolder")); + } + + [Test] + public void AppDataFolder() + { + Assert.AreEqual("App Data", WixDirectoryElement.GetSystemDirectory("AppDataFolder")); + } + + [Test] + public void CommonAppDataFolder() + { + Assert.AreEqual("Common App Data", WixDirectoryElement.GetSystemDirectory("CommonAppDataFolder")); + } + + [Test] + public void CommonFiles64Folder() + { + Assert.AreEqual("Common Files 64", WixDirectoryElement.GetSystemDirectory("CommonFiles64Folder")); + } + + [Test] + public void CommonFilesFolder() + { + Assert.AreEqual("Common Files", WixDirectoryElement.GetSystemDirectory("CommonFilesFolder")); + } + + [Test] + public void DesktopFolder() + { + Assert.AreEqual("Desktop", WixDirectoryElement.GetSystemDirectory("DesktopFolder")); + } + + [Test] + public void FavoritesFolder() + { + Assert.AreEqual("Favorites", WixDirectoryElement.GetSystemDirectory("FavoritesFolder")); + } + + [Test] + public void FontsFolder() + { + Assert.AreEqual("Fonts", WixDirectoryElement.GetSystemDirectory("FontsFolder")); + } + + [Test] + public void LocalAppDataFolder() + { + Assert.AreEqual("Local App Data", WixDirectoryElement.GetSystemDirectory("LocalAppDataFolder")); + } + + [Test] + public void MyPicturesFolder() + { + Assert.AreEqual("My Pictures", WixDirectoryElement.GetSystemDirectory("MyPicturesFolder")); + } + + [Test] + public void PersonalFolder() + { + Assert.AreEqual("Personal", WixDirectoryElement.GetSystemDirectory("PersonalFolder")); + } + + [Test] + public void ProgramFiles64Folder() + { + Assert.AreEqual("Program Files 64", WixDirectoryElement.GetSystemDirectory("ProgramFiles64Folder")); + } + + [Test] + public void ProgramMenuFolder() + { + Assert.AreEqual("Program Menu", WixDirectoryElement.GetSystemDirectory("ProgramMenuFolder")); + } + + [Test] + public void SendToFolder() + { + Assert.AreEqual("Send To", WixDirectoryElement.GetSystemDirectory("SendToFolder")); + } + + [Test] + public void StartMenuFolder() + { + Assert.AreEqual("Start Menu", WixDirectoryElement.GetSystemDirectory("StartMenuFolder")); + } + + [Test] + public void StartupFolder() + { + Assert.AreEqual("Startup", WixDirectoryElement.GetSystemDirectory("StartupFolder")); + } + + [Test] + public void System16Folder() + { + Assert.AreEqual("System 16", WixDirectoryElement.GetSystemDirectory("System16Folder")); + } + + [Test] + public void System64Folder() + { + Assert.AreEqual("System 64", WixDirectoryElement.GetSystemDirectory("System64Folder")); + } + + [Test] + public void SystemFolder() + { + Assert.AreEqual("System", WixDirectoryElement.GetSystemDirectory("SystemFolder")); + } + + [Test] + public void TempFolder() + { + Assert.AreEqual("Temp", WixDirectoryElement.GetSystemDirectory("TempFolder")); + } + + [Test] + public void TemplateFolder() + { + Assert.AreEqual("Templates", WixDirectoryElement.GetSystemDirectory("TemplateFolder")); + } + + [Test] + public void WindowsFolder() + { + Assert.AreEqual("Windows", WixDirectoryElement.GetSystemDirectory("WindowsFolder")); + } + + [Test] + public void WindowsVolume() + { + Assert.AreEqual("Windows Volume", WixDirectoryElement.GetSystemDirectory("WindowsVolume")); + } + } +} diff --git a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/AddFilesTestFixture.cs b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/AddFilesTestFixture.cs index 6eb1cd59dc..bc50692116 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/AddFilesTestFixture.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/AddFilesTestFixture.cs @@ -82,7 +82,7 @@ namespace WixBinding.Tests.PackageFiles [Test] public void ExeFileShortName() { - Assert.AreEqual("TESTAP~1.EXE", exeFileElement.GetAttribute("Name")); + Assert.AreEqual("TESTAP_1.EXE", exeFileElement.GetAttribute("Name")); } [Test] diff --git a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/ShortFileNameGeneratorTests.cs b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/ShortFileNameGeneratorTests.cs index bf14e9a91f..34dddd393b 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/ShortFileNameGeneratorTests.cs +++ b/src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/ShortFileNameGeneratorTests.cs @@ -57,7 +57,7 @@ namespace WixBinding.Tests.PackageFiles public void FileNameTooLong() { string name = "abcdefgh0.txt"; - Assert.AreEqual("ABCDEF~1.TXT", ShortFileName.Convert(name)); + Assert.AreEqual("ABCDEF_1.TXT", ShortFileName.Convert(name)); } [Test] @@ -72,7 +72,7 @@ namespace WixBinding.Tests.PackageFiles { string name = "abcdefghij.txt"; returnFileNameExistsCount = 1; - Assert.AreEqual("ABCDEF~2.TXT", ShortFileName.Convert(name, GetFileNameExists)); + Assert.AreEqual("ABCDEF_2.TXT", ShortFileName.Convert(name, GetFileNameExists)); } [Test] @@ -80,7 +80,7 @@ namespace WixBinding.Tests.PackageFiles { string name = "abcdefghij.txt"; returnFileNameExistsCount = 9; - Assert.AreEqual("ABCDE~10.TXT", ShortFileName.Convert(name, GetFileNameExists)); + Assert.AreEqual("ABCDE_10.TXT", ShortFileName.Convert(name, GetFileNameExists)); } [Test] @@ -88,7 +88,7 @@ namespace WixBinding.Tests.PackageFiles { string name = "abcdefghij.txt"; returnFileNameExistsCount = 99; - Assert.AreEqual("ABCD~100.TXT", ShortFileName.Convert(name, GetFileNameExists)); + Assert.AreEqual("ABCD_100.TXT", ShortFileName.Convert(name, GetFileNameExists)); } diff --git a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj index 45535133f3..2a941e7fbc 100644 --- a/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj +++ b/src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj @@ -186,6 +186,7 @@ + diff --git a/src/Setup/Bitmaps/dlgbmp.bmp b/src/Setup/Bitmaps/dlgbmp.bmp new file mode 100644 index 0000000000..244c3d8826 Binary files /dev/null and b/src/Setup/Bitmaps/dlgbmp.bmp differ diff --git a/src/Setup/Files.wxs b/src/Setup/Files.wxs new file mode 100644 index 0000000000..7b1542999d --- /dev/null +++ b/src/Setup/Files.wxs @@ -0,0 +1,941 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Privileged + + + + + Privileged + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Privileged + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Setup/License.rtf b/src/Setup/License.rtf new file mode 100644 index 0000000000..0637e7ca15 --- /dev/null +++ b/src/Setup/License.rtf @@ -0,0 +1,461 @@ +{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}} +{\*\generator Msftedit 5.41.15.1507;}\viewkind4\uc1\pard\f0\fs20\tab\tab GNU LESSER GENERAL PUBLIC LICENSE\par +\tab\tab Version 2.1, February 1999\par +\par + Copyright (C) 1991, 1999 Free Software Foundation, Inc.\par + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\par + Everyone is permitted to copy and distribute verbatim copies\par + of this license document, but changing it is not allowed.\par +\par +[This is the first released version of the Lesser GPL. It also counts\par + as the successor of the GNU Library Public License, version 2, hence\par + the version number 2.1.]\par +\par +\tab\tab\tab Preamble\par +\par + The licenses for most software are designed to take away your\par +freedom to share and change it. By contrast, the GNU General Public\par +Licenses are intended to guarantee your freedom to share and change\par +free software--to make sure the software is free for all its users.\par +\par + This license, the Lesser General Public License, applies to some\par +specially designated software packages--typically libraries--of the\par +Free Software Foundation and other authors who decide to use it. You\par +can use it too, but we suggest you first think carefully about whether\par +this license or the ordinary General Public License is the better\par +strategy to use in any particular case, based on the explanations below.\par +\par + When we speak of free software, we are referring to freedom of use,\par +not price. Our General Public Licenses are designed to make sure that\par +you have the freedom to distribute copies of free software (and charge\par +for this service if you wish); that you receive source code or can get\par +it if you want it; that you can change the software and use pieces of\par +it in new free programs; and that you are informed that you can do\par +these things.\par +\par + To protect your rights, we need to make restrictions that forbid\par +distributors to deny you these rights or to ask you to surrender these\par +rights. These restrictions translate to certain responsibilities for\par +you if you distribute copies of the library or if you modify it.\par +\par + For example, if you distribute copies of the library, whether gratis\par +or for a fee, you must give the recipients all the rights that we gave\par +you. You must make sure that they, too, receive or can get the source\par +code. If you link other code with the library, you must provide\par +complete object files to the recipients, so that they can relink them\par +with the library after making changes to the library and recompiling\par +it. And you must show them these terms so they know their rights.\par +\par + We protect your rights with a two-step method: (1) we copyright the\par +library, and (2) we offer you this license, which gives you legal\par +permission to copy, distribute and/or modify the library.\par +\par + To protect each distributor, we want to make it very clear that\par +there is no warranty for the free library. Also, if the library is\par +modified by someone else and passed on, the recipients should know\par +that what they have is not the original version, so that the original\par +author's reputation will not be affected by problems that might be\par +introduced by others.\par +\par + Finally, software patents pose a constant threat to the existence of\par +any free program. We wish to make sure that a company cannot\par +effectively restrict the users of a free program by obtaining a\par +restrictive license from a patent holder. Therefore, we insist that\par +any patent license obtained for a version of the library must be\par +consistent with the full freedom of use specified in this license.\par +\par + Most GNU software, including some libraries, is covered by the\par +ordinary GNU General Public License. This license, the GNU Lesser\par +General Public License, applies to certain designated libraries, and\par +is quite different from the ordinary General Public License. We use\par +this license for certain libraries in order to permit linking those\par +libraries into non-free programs.\par +\par + When a program is linked with a library, whether statically or using\par +a shared library, the combination of the two is legally speaking a\par +combined work, a derivative of the original library. The ordinary\par +General Public License therefore permits such linking only if the\par +entire combination fits its criteria of freedom. The Lesser General\par +Public License permits more lax criteria for linking other code with\par +the library.\par +\par + We call this license the "Lesser" General Public License because it\par +does Less to protect the user's freedom than the ordinary General\par +Public License. It also provides other free software developers Less\par +of an advantage over competing non-free programs. These disadvantages\par +are the reason we use the ordinary General Public License for many\par +libraries. However, the Lesser license provides advantages in certain\par +special circumstances.\par +\par + For example, on rare occasions, there may be a special need to\par +encourage the widest possible use of a certain library, so that it becomes\par +a de-facto standard. To achieve this, non-free programs must be\par +allowed to use the library. A more frequent case is that a free\par +library does the same job as widely used non-free libraries. In this\par +case, there is little to gain by limiting the free library to free\par +software only, so we use the Lesser General Public License.\par +\par + In other cases, permission to use a particular library in non-free\par +programs enables a greater number of people to use a large body of\par +free software. For example, permission to use the GNU C Library in\par +non-free programs enables many more people to use the whole GNU\par +operating system, as well as its variant, the GNU/Linux operating\par +system.\par +\par + Although the Lesser General Public License is Less protective of the\par +users' freedom, it does ensure that the user of a program that is\par +linked with the Library has the freedom and the wherewithal to run\par +that program using a modified version of the Library.\par +\par + The precise terms and conditions for copying, distribution and\par +modification follow. Pay close attention to the difference between a\par +"work based on the library" and a "work that uses the library". The\par +former contains code derived from the library, whereas the latter must\par +be combined with the library in order to run.\par +\par +\tab\tab GNU LESSER GENERAL PUBLIC LICENSE\par + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par +\par + 0. This License Agreement applies to any software library or other\par +program which contains a notice placed by the copyright holder or\par +other authorized party saying it may be distributed under the terms of\par +this Lesser General Public License (also called "this License").\par +Each licensee is addressed as "you".\par +\par + A "library" means a collection of software functions and/or data\par +prepared so as to be conveniently linked with application programs\par +(which use some of those functions and data) to form executables.\par +\par + The "Library", below, refers to any such software library or work\par +which has been distributed under these terms. A "work based on the\par +Library" means either the Library or any derivative work under\par +copyright law: that is to say, a work containing the Library or a\par +portion of it, either verbatim or with modifications and/or translated\par +straightforwardly into another language. (Hereinafter, translation is\par +included without limitation in the term "modification".)\par +\par + "Source code" for a work means the preferred form of the work for\par +making modifications to it. For a library, complete source code means\par +all the source code for all modules it contains, plus any associated\par +interface definition files, plus the scripts used to control compilation\par +and installation of the library.\par +\par + Activities other than copying, distribution and modification are not\par +covered by this License; they are outside its scope. The act of\par +running a program using the Library is not restricted, and output from\par +such a program is covered only if its contents constitute a work based\par +on the Library (independent of the use of the Library in a tool for\par +writing it). Whether that is true depends on what the Library does\par +and what the program that uses the Library does.\par + \par + 1. You may copy and distribute verbatim copies of the Library's\par +complete source code as you receive it, in any medium, provided that\par +you conspicuously and appropriately publish on each copy an\par +appropriate copyright notice and disclaimer of warranty; keep intact\par +all the notices that refer to this License and to the absence of any\par +warranty; and distribute a copy of this License along with the\par +Library.\par +\par + You may charge a fee for the physical act of transferring a copy,\par +and you may at your option offer warranty protection in exchange for a\par +fee.\par +\par + 2. You may modify your copy or copies of the Library or any portion\par +of it, thus forming a work based on the Library, and copy and\par +distribute such modifications or work under the terms of Section 1\par +above, provided that you also meet all of these conditions:\par +\par + a) The modified work must itself be a software library.\par +\par + b) You must cause the files modified to carry prominent notices\par + stating that you changed the files and the date of any change.\par +\par + c) You must cause the whole of the work to be licensed at no\par + charge to all third parties under the terms of this License.\par +\par + d) If a facility in the modified Library refers to a function or a\par + table of data to be supplied by an application program that uses\par + the facility, other than as an argument passed when the facility\par + is invoked, then you must make a good faith effort to ensure that,\par + in the event an application does not supply such function or\par + table, the facility still operates, and performs whatever part of\par + its purpose remains meaningful.\par +\par + (For example, a function in a library to compute square roots has\par + a purpose that is entirely well-defined independent of the\par + application. Therefore, Subsection 2d requires that any\par + application-supplied function or table used by this function must\par + be optional: if the application does not supply it, the square\par + root function must still compute square roots.)\par +\par +These requirements apply to the modified work as a whole. If\par +identifiable sections of that work are not derived from the Library,\par +and can be reasonably considered independent and separate works in\par +themselves, then this License, and its terms, do not apply to those\par +sections when you distribute them as separate works. But when you\par +distribute the same sections as part of a whole which is a work based\par +on the Library, the distribution of the whole must be on the terms of\par +this License, whose permissions for other licensees extend to the\par +entire whole, and thus to each and every part regardless of who wrote\par +it.\par +\par +Thus, it is not the intent of this section to claim rights or contest\par +your rights to work written entirely by you; rather, the intent is to\par +exercise the right to control the distribution of derivative or\par +collective works based on the Library.\par +\par +In addition, mere aggregation of another work not based on the Library\par +with the Library (or with a work based on the Library) on a volume of\par +a storage or distribution medium does not bring the other work under\par +the scope of this License.\par +\par + 3. You may opt to apply the terms of the ordinary GNU General Public\par +License instead of this License to a given copy of the Library. To do\par +this, you must alter all the notices that refer to this License, so\par +that they refer to the ordinary GNU General Public License, version 2,\par +instead of to this License. (If a newer version than version 2 of the\par +ordinary GNU General Public License has appeared, then you can specify\par +that version instead if you wish.) Do not make any other change in\par +these notices.\par +\page\par + Once this change is made in a given copy, it is irreversible for\par +that copy, so the ordinary GNU General Public License applies to all\par +subsequent copies and derivative works made from that copy.\par +\par + This option is useful when you wish to copy part of the code of\par +the Library into a program that is not a library.\par +\par + 4. You may copy and distribute the Library (or a portion or\par +derivative of it, under Section 2) in object code or executable form\par +under the terms of Sections 1 and 2 above provided that you accompany\par +it with the complete corresponding machine-readable source code, which\par +must be distributed under the terms of Sections 1 and 2 above on a\par +medium customarily used for software interchange.\par +\par + If distribution of object code is made by offering access to copy\par +from a designated place, then offering equivalent access to copy the\par +source code from the same place satisfies the requirement to\par +distribute the source code, even though third parties are not\par +compelled to copy the source along with the object code.\par +\par + 5. A program that contains no derivative of any portion of the\par +Library, but is designed to work with the Library by being compiled or\par +linked with it, is called a "work that uses the Library". Such a\par +work, in isolation, is not a derivative work of the Library, and\par +therefore falls outside the scope of this License.\par +\par + However, linking a "work that uses the Library" with the Library\par +creates an executable that is a derivative of the Library (because it\par +contains portions of the Library), rather than a "work that uses the\par +library". The executable is therefore covered by this License.\par +Section 6 states terms for distribution of such executables.\par +\par + When a "work that uses the Library" uses material from a header file\par +that is part of the Library, the object code for the work may be a\par +derivative work of the Library even though the source code is not.\par +Whether this is true is especially significant if the work can be\par +linked without the Library, or if the work is itself a library. The\par +threshold for this to be true is not precisely defined by law.\par +\par + If such an object file uses only numerical parameters, data\par +structure layouts and accessors, and small macros and small inline\par +functions (ten lines or less in length), then the use of the object\par +file is unrestricted, regardless of whether it is legally a derivative\par +work. (Executables containing this object code plus portions of the\par +Library will still fall under Section 6.)\par +\par + Otherwise, if the work is a derivative of the Library, you may\par +distribute the object code for the work under the terms of Section 6.\par +Any executables containing that work also fall under Section 6,\par +whether or not they are linked directly with the Library itself.\par +\par + 6. As an exception to the Sections above, you may also combine or\par +link a "work that uses the Library" with the Library to produce a\par +work containing portions of the Library, and distribute that work\par +under terms of your choice, provided that the terms permit\par +modification of the work for the customer's own use and reverse\par +engineering for debugging such modifications.\par +\par + You must give prominent notice with each copy of the work that the\par +Library is used in it and that the Library and its use are covered by\par +this License. You must supply a copy of this License. If the work\par +during execution displays copyright notices, you must include the\par +copyright notice for the Library among them, as well as a reference\par +directing the user to the copy of this License. Also, you must do one\par +of these things:\par +\par + a) Accompany the work with the complete corresponding\par + machine-readable source code for the Library including whatever\par + changes were used in the work (which must be distributed under\par + Sections 1 and 2 above); and, if the work is an executable linked\par + with the Library, with the complete machine-readable "work that\par + uses the Library", as object code and/or source code, so that the\par + user can modify the Library and then relink to produce a modified\par + executable containing the modified Library. (It is understood\par + that the user who changes the contents of definitions files in the\par + Library will not necessarily be able to recompile the application\par + to use the modified definitions.)\par +\par + b) Use a suitable shared library mechanism for linking with the\par + Library. A suitable mechanism is one that (1) uses at run time a\par + copy of the library already present on the user's computer system,\par + rather than copying library functions into the executable, and (2)\par + will operate properly with a modified version of the library, if\par + the user installs one, as long as the modified version is\par + interface-compatible with the version that the work was made with.\par +\par + c) Accompany the work with a written offer, valid for at\par + least three years, to give the same user the materials\par + specified in Subsection 6a, above, for a charge no more\par + than the cost of performing this distribution.\par +\par + d) If distribution of the work is made by offering access to copy\par + from a designated place, offer equivalent access to copy the above\par + specified materials from the same place.\par +\par + e) Verify that the user has already received a copy of these\par + materials or that you have already sent this user a copy.\par +\par + For an executable, the required form of the "work that uses the\par +Library" must include any data and utility programs needed for\par +reproducing the executable from it. However, as a special exception,\par +the materials to be distributed need not include anything that is\par +normally distributed (in either source or binary form) with the major\par +components (compiler, kernel, and so on) of the operating system on\par +which the executable runs, unless that component itself accompanies\par +the executable.\par +\par + It may happen that this requirement contradicts the license\par +restrictions of other proprietary libraries that do not normally\par +accompany the operating system. Such a contradiction means you cannot\par +use both them and the Library together in an executable that you\par +distribute.\par +\par + 7. You may place library facilities that are a work based on the\par +Library side-by-side in a single library together with other library\par +facilities not covered by this License, and distribute such a combined\par +library, provided that the separate distribution of the work based on\par +the Library and of the other library facilities is otherwise\par +permitted, and provided that you do these two things:\par +\par + a) Accompany the combined library with a copy of the same work\par + based on the Library, uncombined with any other library\par + facilities. This must be distributed under the terms of the\par + Sections above.\par +\par + b) Give prominent notice with the combined library of the fact\par + that part of it is a work based on the Library, and explaining\par + where to find the accompanying uncombined form of the same work.\par +\par + 8. You may not copy, modify, sublicense, link with, or distribute\par +the Library except as expressly provided under this License. Any\par +attempt otherwise to copy, modify, sublicense, link with, or\par +distribute the Library is void, and will automatically terminate your\par +rights under this License. However, parties who have received copies,\par +or rights, from you under this License will not have their licenses\par +terminated so long as such parties remain in full compliance.\par +\par + 9. You are not required to accept this License, since you have not\par +signed it. However, nothing else grants you permission to modify or\par +distribute the Library or its derivative works. These actions are\par +prohibited by law if you do not accept this License. Therefore, by\par +modifying or distributing the Library (or any work based on the\par +Library), you indicate your acceptance of this License to do so, and\par +all its terms and conditions for copying, distributing or modifying\par +the Library or works based on it.\par +\par + 10. Each time you redistribute the Library (or any work based on the\par +Library), the recipient automatically receives a license from the\par +original licensor to copy, distribute, link with or modify the Library\par +subject to these terms and conditions. You may not impose any further\par +restrictions on the recipients' exercise of the rights granted herein.\par +You are not responsible for enforcing compliance by third parties with\par +this License.\par +\par + 11. If, as a consequence of a court judgment or allegation of patent\par +infringement or for any other reason (not limited to patent issues),\par +conditions are imposed on you (whether by court order, agreement or\par +otherwise) that contradict the conditions of this License, they do not\par +excuse you from the conditions of this License. If you cannot\par +distribute so as to satisfy simultaneously your obligations under this\par +License and any other pertinent obligations, then as a consequence you\par +may not distribute the Library at all. For example, if a patent\par +license would not permit royalty-free redistribution of the Library by\par +all those who receive copies directly or indirectly through you, then\par +the only way you could satisfy both it and this License would be to\par +refrain entirely from distribution of the Library.\par +\par +If any portion of this section is held invalid or unenforceable under any\par +particular circumstance, the balance of the section is intended to apply,\par +and the section as a whole is intended to apply in other circumstances.\par +\par +It is not the purpose of this section to induce you to infringe any\par +patents or other property right claims or to contest validity of any\par +such claims; this section has the sole purpose of protecting the\par +integrity of the free software distribution system which is\par +implemented by public license practices. Many people have made\par +generous contributions to the wide range of software distributed\par +through that system in reliance on consistent application of that\par +system; it is up to the author/donor to decide if he or she is willing\par +to distribute software through any other system and a licensee cannot\par +impose that choice.\par +\par +This section is intended to make thoroughly clear what is believed to\par +be a consequence of the rest of this License.\par +\par + 12. If the distribution and/or use of the Library is restricted in\par +certain countries either by patents or by copyrighted interfaces, the\par +original copyright holder who places the Library under this License may add\par +an explicit geographical distribution limitation excluding those countries,\par +so that distribution is permitted only in or among countries not thus\par +excluded. In such case, this License incorporates the limitation as if\par +written in the body of this License.\par +\par + 13. The Free Software Foundation may publish revised and/or new\par +versions of the Lesser General Public License from time to time.\par +Such new versions will be similar in spirit to the present version,\par +but may differ in detail to address new problems or concerns.\par +\par +Each version is given a distinguishing version number. If the Library\par +specifies a version number of this License which applies to it and\par +"any later version", you have the option of following the terms and\par +conditions either of that version or of any later version published by\par +the Free Software Foundation. If the Library does not specify a\par +license version number, you may choose any version ever published by\par +the Free Software Foundation.\par +\par + 14. If you wish to incorporate parts of the Library into other free\par +programs whose distribution conditions are incompatible with these,\par +write to the author to ask for permission. For software which is\par +copyrighted by the Free Software Foundation, write to the Free\par +Software Foundation; we sometimes make exceptions for this. Our\par +decision will be guided by the two goals of preserving the free status\par +of all derivatives of our free software and of promoting the sharing\par +and reuse of software generally.\par +\par +\tab\tab\tab NO WARRANTY\par +\par + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\par +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\par +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\par +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\par +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\par +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\par +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\par +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\par +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par +\par + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\par +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\par +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\par +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\par +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\par +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\par +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\par +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\par +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\par +DAMAGES.\par +\par +\tab\tab END OF TERMS AND CONDITIONS\par +} + \ No newline at end of file diff --git a/src/Setup/NetFxExtension.wxs b/src/Setup/NetFxExtension.wxs new file mode 100644 index 0000000000..67612bb3b6 --- /dev/null +++ b/src/Setup/NetFxExtension.wxs @@ -0,0 +1,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Privileged + Privileged AND DISABLEROLLBACK = 1 + Privileged AND DISABLEROLLBACK <> 1 + + + + + + + + diff --git a/src/Setup/Setup.wxs b/src/Setup/Setup.wxs new file mode 100644 index 0000000000..070d4d61cc --- /dev/null +++ b/src/Setup/Setup.wxs @@ -0,0 +1,192 @@ + + + + + + + + + + MsiNetAssemblySupport >= "2.0.50727" + + + + + VersionNT >= 500 + + + + + + + 2 + + + http://icsharpcode.net/OpenSource/SD/ContactUs.asp + http://community.sharpdevelop.net/forums/ + http://icsharpcode.net/OpenSource/SD/ + http://icsharpcode.net/OpenSource/SD/Download/ + + + + + + + SharpDevelopIcon.exe + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + INSTALLDIR + + + diff --git a/src/Setup/SharpDevelop.Setup.sln b/src/Setup/SharpDevelop.Setup.sln new file mode 100644 index 0000000000..720faf1dc7 --- /dev/null +++ b/src/Setup/SharpDevelop.Setup.sln @@ -0,0 +1,16 @@ +Microsoft Visual Studio Solution File, Format Version 9.00 +# SharpDevelop 2.1.0.1668 +Project("{CFEE4113-1246-4D54-95CB-156813CB8593}") = "SharpDevelop.Setup", "SharpDevelop.Setup.wixproj", "{FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6}.Release|Any CPU.Build.0 = Release|Any CPU + {FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6}.Release|Any CPU.ActiveCfg = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/src/Setup/SharpDevelop.Setup.wixproj b/src/Setup/SharpDevelop.Setup.wixproj new file mode 100644 index 0000000000..66a08977ac --- /dev/null +++ b/src/Setup/SharpDevelop.Setup.wixproj @@ -0,0 +1,42 @@ + + + SharpDevelop + package + $(SharpDevelopBinPath)\Tools\Wix + $(WixToolPath) + $(SharpDevelopBinPath)\Tools\Wix + Debug + SharpDevelop.Setup + {FFC0F136-2F91-4F2E-8D8B-DD435F01A7E6} + bin\ + 0 + False + ..\..\bin\Tools\Wix\WixUI_en-us.wxl + + + obj\ + obj\Debug\ + + + obj\ + obj\Release\ + + + + + + + + + + Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler + + + Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler + + + Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler + + + + \ No newline at end of file diff --git a/src/Setup/buildSetup.bat b/src/Setup/buildSetup.bat new file mode 100644 index 0000000000..a5e5b69602 --- /dev/null +++ b/src/Setup/buildSetup.bat @@ -0,0 +1,3 @@ +del "bin\SharpDevelop.msi" +%windir%\microsoft.net\framework\v2.0.50727\msbuild SharpDevelop.Setup.sln "/p:SharpDevelopBinPath=%CD%\..\..\bin" +@IF %ERRORLEVEL% NEQ 0 PAUSE \ No newline at end of file diff --git a/src/Tools/Tools.build b/src/Tools/Tools.build index 6ef4aee71d..323bae9b3d 100644 --- a/src/Tools/Tools.build +++ b/src/Tools/Tools.build @@ -2,6 +2,7 @@ + @@ -16,6 +17,7 @@ +