2015-09-26 138 views
1

首先,我是WixSharp的新手。对于几个小时,现在我一直在试图指定自定义文件,License.rtf,我的设置项目是这样的:在wixsharp中指定项目的自定义许可证文件

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); 
} 
} 

在此先感谢。

回答

0

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

对于Windows 7和.NET 3.5 SP1 - https://www.microsoft.com/en-us/download/confirmation.aspx?id=3138

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

我是WixSharp自己的新手,所以我还没有找到另一种方式(但!),但这对我有效。

祝你好运!

相关问题