Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在wixsharp中为项目指定自定义许可证文件_C#_Wix_Wixsharp - Fatal编程技术网

C# 在wixsharp中为项目指定自定义许可证文件

C# 在wixsharp中为项目指定自定义许可证文件,c#,wix,wixsharp,C#,Wix,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.

首先,我是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);
}
}

提前感谢。

不确定您是否找到了问题的答案,但Orca是一个MSI表编辑器,包含在Windows SDK中

对于Windows 7和.NET 3.5 SP1-

安装后,导航到C:\Program Files\Microsoft SDK\Windows\v7.0\Bin 并执行orca.msi。然后运行Wix#项目以生成msi文件。使用Orca打开msi文件并导航到二进制表。双击WixSharp_LicenseFile的数据列,您将获得读取或写入文件的选项。如果要查看内容,请选择文件名(.rtf格式)并写入文件。进行任何您想要的更改,或者替换该文件,然后使用它读取该二进制数据行。将其读入msi表后,保存msi文件并关闭

我对WixSharp还不熟悉,所以我还没有找到另一种方法,但这对我来说很有效

祝你好运