Указание пользовательского файла лицензии для проекта в wixsharp

Начнем с того, что я новичок в WixSharp. Уже несколько часов я пытаюсь указать специальный файл License.rtf для моего проекта установки, например:

project.LicenceFile = "License.rtf";

Но я продолжаю получать эту ошибку:

C# Script execution engine. Version 3.9.4.1.
Copyright (C) 2004-2014 Oleg Shilo.

Error: Specified file could not be executed.

System.Xml.XmlException: The prefix '' cannot be redefined from 'http://schemas. microsoft.com/wix/2006/wi' to '' within the same start element tag.
at System.Xml.XmlWellFormedWriter.PushNamespaceExplicit(String prefix, String ns)
at System.Xml.XmlWellFormedWriter.WriteEndAttribute()
at System.Xml.Linq.ElementWriter.WriteStartElement(XElement e)
at System.Xml.Linq.ElementWriter.WriteElement(XElement e)
at System.Xml.Linq.XElement.WriteTo(XmlWriter writer)
at System.Xml.Linq.XContainer.WriteContentTo(XmlWriter writer)
at System.Xml.Linq.XDocument.WriteTo(XmlWriter writer)
at System.Xml.Linq.XDocument.Save(TextWriter textWriter, SaveOptions options)

at WixSharp.Compiler.BuildWxs(Project project, String path, OutputType type)
at WixSharp.Compiler.BuildWxs(Project project, OutputType type)
at WixSharp.Compiler.Build(Project project, String path, OutputType type)
at WixSharp.Compiler.Build(Project project, OutputType type)
at Script.Main(String[] args)

Пожалуйста, может кто-нибудь сказать мне, что я делаю не так. Вот мой код setup.cs:

//css_dir ..\..\;
//css_ref Wix_bin\SDK\Microsoft.Deployment.WindowsInstaller.dll;
//css_ref System.Core.dll;
using System;
using System.Xml;
using System.Xml.Linq;
using System.Linq;
using System.Windows.Forms;
using Microsoft.Deployment.WindowsInstaller;
using Microsoft.Win32;
using WixSharp;
using WixSharp.CommonTasks;

class Script
{
static public void Main(string[] args)
{
    var project =

        new Project("myproduct",
            new Dir(@"%ProgramFiles%\My Company\myproduct", new DirFiles(@"Files\*.*"), 
        new Dir("DataModel", new DirFiles(@"Files\Data\*.*"),new Dir("Music", new DirFiles(@"Files\Data\Music\*.*")),new Dir("CardPack", new DirFiles(@"Files\Data\CardPack\*.*")),new Dir("CardSingle", new DirFiles(@"Files\Data\CardSingle\*.*"))),
                    new ExeFileShortcut("Uninstall MyProduct", "[System64Folder]msiexec.exe", "/x [ProductCode]")), 
    new Dir(@"%AppDataFolder%\myproduct", new File(@"Files\Config\Configure.json"), new Dir("Folder1", new DirFiles(@"Files\Folder2\*.*"))));
    project.LicenceFile = "License.rtf";
    project.UI = WUI.WixUI_Minimal;
    project.GUID = new Guid();

    project.ResolveWildCards();

    var exeFile = project.AllFiles.Single(f=>f.Name.EndsWith("myproduct.exe"));

    exeFile.Shortcuts = new[] { 
                                new FileShortcut("myproduct.exe", "INSTALLDIR"),
                                new FileShortcut("myproduct.exe", @"%Desktop%")
                              };

    Compiler.BuildMsi(project);
}
}

Заранее спасибо.

1 ответ

Не уверен, что вы нашли ответ на свой вопрос, но Orca - это редактор таблиц MSI, включенный в Windows SDK.

Для Windows 7 и.NET 3.5 SP1 - https://www.microsoft.com/en-us/download/confirmation.aspx?id=3138

После установки перейдите в C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin и запустите файл orca.msi. Затем вы запустите свой проект Wix# для создания файла MSI. Откройте файл msi с помощью Orca и перейдите к двоичной таблице. Дважды щелкните столбец данных для WixSharp_LicenseFile, и вам будет предоставлена ​​возможность чтения или записи в файл. Если вы хотите просмотреть содержимое, выберите имя файла (формат.rtf) и запишите в файл. Внесите любые необходимые изменения или замените этот файл, а затем используйте его для чтения в эту строку двоичных данных. Как только вы прочитали его в таблицу msi, сохраните файл msi и закройте его.

Я новичок в WixSharp, поэтому я не нашел другого пути (пока!), Но это сработало для меня.

Удачи!

Другие вопросы по тегам