Browse Source

Remove dot characters from generated WiX component ids.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@3224 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Matt Ward 17 years ago
parent
commit
ee432c5ff0
  1. 32
      src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs
  2. 65
      src/AddIns/BackendBindings/WixBinding/Test/Document/GenerateComponentIdFromDirectoryWithDotsTestFixture.cs
  3. 7
      src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs
  4. 1
      src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj
  5. 2
      src/AddIns/BackendBindings/WixBinding/WixBinding.sln

32
src/AddIns/BackendBindings/WixBinding/Project/Src/WixComponentElement.cs

@ -22,39 +22,25 @@ namespace ICSharpCode.WixBinding @@ -22,39 +22,25 @@ namespace ICSharpCode.WixBinding
}
public string Guid {
get {
return GetAttribute("Guid");
}
set {
SetAttribute("Guid", value);
}
get { return GetAttribute("Guid"); }
set { SetAttribute("Guid", value); }
}
public string Id {
get {
return GetAttribute("Id");
}
set {
SetAttribute("Id", value);
}
get { return GetAttribute("Id"); }
set { SetAttribute("Id", value); }
}
public string DiskId {
get {
return GetAttribute("DiskId");
}
set {
SetAttribute("DiskId", value);
}
get { return GetAttribute("DiskId"); }
set { SetAttribute("DiskId", value); }
}
/// <summary>
/// Checks whether the disk id has already been set for this component.
/// </summary>
public bool HasDiskId {
get {
return HasAttribute("DiskId");
}
get { return HasAttribute("DiskId"); }
}
/// <summary>
@ -95,7 +81,7 @@ namespace ICSharpCode.WixBinding @@ -95,7 +81,7 @@ namespace ICSharpCode.WixBinding
// Add the parent folder to the id.
string parentDirectory = WixDirectoryElement.GetLastDirectoryName(Path.GetDirectoryName(fileName));
parentDirectory = FirstCharacterToUpperInvariant(parentDirectory);
parentDirectory = WixFileElement.GenerateId(parentDirectory);
parentDirectory = WixFileElement.GenerateId(parentDirectory).Replace(".", String.Empty);
id = String.Concat(parentDirectory, id);
if (!document.ComponentIdExists(id)) {
return id;
@ -124,7 +110,7 @@ namespace ICSharpCode.WixBinding @@ -124,7 +110,7 @@ namespace ICSharpCode.WixBinding
string fileNameNoExtension = Path.GetFileNameWithoutExtension(fileName);
string idStart = String.Empty;
if (fileNameNoExtension.Length > 0) {
idStart = FirstCharacterToUpperInvariant(fileNameNoExtension);
idStart = FirstCharacterToUpperInvariant(fileNameNoExtension).Replace(".", String.Empty);
}
// Remove period from extension and uppercase first extension char.

65
src/AddIns/BackendBindings/WixBinding/Test/Document/GenerateComponentIdFromDirectoryWithDotsTestFixture.cs

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Matthew Ward" email="mrward@users.sourceforge.net"/>
// <version>$Revision$</version>
// </file>
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;
using System;
using System.Collections;
using System.Collections.Specialized;
using System.IO;
using System.Xml;
using WixBinding.Tests.PackageFiles;
using WixBinding.Tests.Utils;
namespace WixBinding.Tests.Document
{
/// <summary>
/// When a duplicate component id exists and the parent directory is used any dots should
/// be removed from the parent directory.
/// </summary>
[TestFixture]
public class GenerateComponentIdFromDirectoryWithDotsTestFixture
{
string id = String.Empty;
[SetUp]
public void SetUpFixture()
{
WixDocument doc = new WixDocument();
doc.LoadXml(GetWixXml());
id = WixComponentElement.GenerateIdFromFileName(doc, @"C:\Projects\My.Project\MyApp.exe");
}
[Test]
public void IdHasDotsRemoved()
{
Assert.AreEqual("MyProjectMyAppExe", id);
}
static string GetWixXml()
{
return "<Wix xmlns=\"http://schemas.microsoft.com/wix/2006/wi\">\r\n" +
"\t<Product Name=\"MySetup\" \r\n" +
"\t Manufacturer=\"\" \r\n" +
"\t Id=\"F4A71A3A-C271-4BE8-B72C-F47CC956B3AA\" \r\n" +
"\t Language=\"1033\" \r\n" +
"\t Version=\"1.0.0.0\">\r\n" +
"\t\t<Package Id=\"6B8BE64F-3768-49CA-8BC2-86A76424DFE9\"/>\r\n" +
"\t\t<Directory Id=\"TARGETDIR\" SourceName=\"SourceDir\">\r\n" +
"\t\t\t<Directory Id=\"ProgramFilesFolder\" Name=\"PFiles\">\r\n" +
"\t\t\t\t<Directory Id=\"INSTALLDIR\" Name=\"OtherFolder\">\r\n" +
"\t\t\t\t\t<Component Id=\"MyAppExe\" Guid=\"999DE542-C4A9-48DA-ACF8-09949CDCD808\" DiskId=\"1\">\r\n" +
"\t\t\t\t\t</Component>\r\n" +
"\t\t\t\t</Directory>\r\n" +
"\t\t\t</Directory>\r\n" +
"\t\t</Directory>\r\n" +
"\t</Product>\r\n" +
"</Wix>";
}
}
}

7
src/AddIns/BackendBindings/WixBinding/Test/PackageFiles/GenerateComponentIdTests.cs

@ -54,5 +54,12 @@ namespace WixBinding.Tests.PackageFiles @@ -54,5 +54,12 @@ namespace WixBinding.Tests.PackageFiles
string fileName = "a-b.txt";
Assert.AreEqual("A_bTxt", WixComponentElement.GenerateIdFromFileName(fileName));
}
[Test]
public void DotsInFileName()
{
string fileName = "a.b.txt";
Assert.AreEqual("AbTxt", WixComponentElement.GenerateIdFromFileName(fileName));
}
}
}

1
src/AddIns/BackendBindings/WixBinding/Test/WixBinding.Tests.csproj

@ -50,6 +50,7 @@ @@ -50,6 +50,7 @@
<ItemGroup>
<Compile Include="AssemblyInfo.cs" />
<Compile Include="Diff\MissingDirectoryTestFixture.cs" />
<Compile Include="Document\GenerateComponentIdFromDirectoryWithDotsTestFixture.cs" />
<Compile Include="Document\NewWixFileElementTests.cs" />
<Compile Include="Gui\AddDialogsToSetupDialogListTestFixture.cs" />
<Compile Include="Gui\DeleteWixExtensionNodeTestFixture.cs" />

2
src/AddIns/BackendBindings/WixBinding/WixBinding.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
# SharpDevelop 3.0.0.2745
# SharpDevelop 3.0.0.3122
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "Project\WixBinding.csproj", "{e1b288a2-08ee-4318-8bbb-8ab72c69e33e}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding.Tests", "Test\WixBinding.Tests.csproj", "{388E7B64-0393-4EB4-A3E3-5C474F141853}"

Loading…
Cancel
Save