3

まず、私は 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);
}
}

前もって感謝します。

4

1 に答える 1

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\Microsoft SDKs\Windows\v7.0\Bin に移動し、orca.msi を実行します。次に、Wix# プロジェクトを実行して msi ファイルを生成します。Orca で msi ファイルを開き、Binary テーブルに移動します。WixSharp_LicenseFile のデータ列をダブルクリックすると、ファイルの読み取りまたは書き込みのオプションが表示されます。内容を見たい場合は、ファイル名(.rtf形式)を選択してファイルに書き込みます。必要な変更を行うか、そのファイルを置き換えてから、それを使用してそのバイナリ データ行を読み取ります。msi テーブルに読み込んだら、msi ファイルを保存して閉じます。

私は自分自身 WixSharp を初めて使用するので、別の方法を見つけていません (まだ!) が、これはうまくいきました。

幸運を!

于 2016-04-02T22:29:05.480 に答える