Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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

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# WiX工具-安装程序未将文件添加到安装目录_C#_Wix - Fatal编程技术网

C# WiX工具-安装程序未将文件添加到安装目录

C# WiX工具-安装程序未将文件添加到安装目录,c#,wix,C#,Wix,我正在使用WiX工具3.10创建一个简单C#应用程序的安装程序。我遵循了官方文档中的教程,但我有以下问题:我需要在应用程序目录中添加一个.txt文件,但安装程序只添加应用程序的可执行文件。以下是.wxs文件的XML: 目录结构: <Fragment> <!-- Step 1: Define the directory structure --> <Directory Id="TARGETDIR" Name="SourceDir"> <Director

我正在使用WiX工具3.10创建一个简单C#应用程序的安装程序。我遵循了官方文档中的教程,但我有以下问题:我需要在应用程序目录中添加一个.txt文件,但安装程序只添加应用程序的可执行文件。以下是.wxs文件的XML:

目录结构:

<Fragment>
<!-- Step 1: Define the directory structure -->
<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore">
    </Directory>
  </Directory>
</Directory>    
</Fragment>

添加文件:

  <Fragment>
    <!-- Step 2: Add files to your installer package -->
    <DirectoryRef Id="APPLICATIONROOTDIRECTORY">
      <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb">
        <File Id="Controllore.exe" Source="MyPath\Controllore.exe" KeyPath="yes" Checksum="yes"/>
      </Component>
      <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca">
        <File Id="param.txt" Source="MyPath\param.txt" KeyPath="yes"/>
      </Component>
    </DirectoryRef>
  </Fragment>
  <Fragment>
    <!-- Step 3: Tell WiX to install the files -->
    <Feature Id="MainApplication" Title="Main Application" Level="1">
      <ComponentRef Id="Controllore.exe" />
      <ComponentRef Id="param.txt" />
    </Feature>
  </Fragment>

最后,我必须添加这些行,否则安装程序将不会安装任何内容:

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="APPLICATIONROOTDIRECTORY">
  <Component Id="CMP_Controllore">
    <File Source="$(var.Controllore.TargetPath)" KeyPath="yes" />
  </Component>
    </ComponentGroup>
</Fragment> 

您可以尝试重新安排设置方式。我发现在学习第一次使用WiX时,尝试使用片段确实令人沮丧。我不知道这是最好的方法,因为在更大的产品上进行维护会非常麻烦,但我有类似的建议(考虑到您的文件名):



对于较小的项目,我发现直接将所有相关信息放入目录中,而不必担心片段,这会容易得多。显然,如果你必须在一个有大型项目的团队中工作,这是不合理的。

你可以尝试重新安排你的项目设置方式。我发现在学习第一次使用WiX时,尝试使用片段确实令人沮丧。我不知道这是最好的方法,因为在更大的产品上进行维护会非常麻烦,但我有类似的建议(考虑到您的文件名):



对于较小的项目,我发现直接将所有相关信息放入目录中,而不必担心片段,这会容易得多。显然,如果您必须在一个有大型项目的团队中工作,这是不合理的。

您需要了解,除非一个片段被另一个片段引用,否则它不会被处理。然后对整个片段进行原子化处理

我有一个名为ISWIX()的开源项目。它包含VS项目模板和图形设计器,可真正帮助您更快地掌握进度。然后你可以看看它是如何组织它的片段的,看看它是如何组合在一起的,然后自己决定如何继续

这是一个2分钟的短片,其中我1)创建一个桌面应用程序,2)为它创建一个WiX/IsWiX安装程序。这真的很容易


您需要了解,除非一个片段被另一个片段引用,否则它不会被处理。然后对整个片段进行原子化处理

我有一个名为ISWIX()的开源项目。它包含VS项目模板和图形设计器,可真正帮助您更快地掌握进度。然后你可以看看它是如何组织它的片段的,看看它是如何组合在一起的,然后自己决定如何继续

这是一个2分钟的短片,其中我1)创建一个桌面应用程序,2)为它创建一个WiX/IsWiX安装程序。这真的很容易


WIX?逃跑跑远一点,远一点。我喜欢WIX,你只需要进入正确的思维模式。至少它不是installshieldWIX?逃跑跑得很远很远。我喜欢WIX,你只需要进入正确的思维模式就可以了。至少它没有安装。我试过你的代码,但它不起作用:在包标签关闭的地方,似乎只有预期。如果删除,则会出现更多错误:“未解析对symbold介质的引用:1在Product.*部分”。每个文件标签都有一个。@SamuRed修复了这个问题,抱歉。我有媒体模板在那里只是为了嵌入WiX创建的文件柜。如果将
EmbedCab=“yes”
添加到MediaTemplate中,它是否仍会引发错误?XML代码现在正常了。文件param.txt的文件标签上出现错误:似乎找不到文件,但奇怪的是,错误报告了文件的正确路径,我确信文件存在!好的,解决了!不知道为什么,但删除并创建一个全新的文件解决了这个问题。感谢您的帮助@MelovitzI已经尝试了您的代码,但它不起作用:在关闭包标签的地方,似乎只有预期的情况。如果删除,则会出现更多错误:“未解析对symbold介质的引用:1在Product.*部分”。每个文件标签都有一个。@SamuRed修复了这个问题,抱歉。我有媒体模板在那里只是为了嵌入WiX创建的文件柜。如果将
EmbedCab=“yes”
添加到MediaTemplate中,它是否仍会引发错误?XML代码现在正常了。文件param.txt的文件标签上出现错误:似乎找不到文件,但奇怪的是,错误报告了文件的正确路径,我确信文件存在!好的,解决了!不知道为什么,但删除并创建一个全新的文件解决了这个问题。谢谢你的帮助@MelovitzThank,我一定会尝试你的工具,但现在我正在寻找一个更快的解决方案。在DropBox上向我发送邀请(chrpai@iswix.com)使用你的EXE,我将在10分钟内为你准备一个安装项目。谢谢,我一定会尝试你的工具,但现在我正在寻找一个更快的解决方案。在DropBox上向我发送邀请(chrpai@iswix.com)用你的EXE,我会在10分钟内为你准备一个安装项目。
<?xml ...?>
<Wix ...>
  <Product ...>
    <Package ... />
    <MajorUpgrade .../>
    <MediaTemplate EmbedCab="yes" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="APPLICATIONROOTDIRECTORY" Name="Controllore">
          <Component Id="Controllore.exe" Guid="ce2f6f3f-73b4-4fa9-9c3f-76685d520fdb">
            <File Id="Controllore.exe" Source="$(var.Controllore.TargetPath)" 
                    KeyPath="yes" Checksum="yes"/>
          </Component>
          <Component Id="param.txt" Guid="5ffe84e4-5893-48be-af86-1731bcd176ca">
            <File Id="param.txt" Source="$(var.Controllore.TargetDir)param.txt" KeyPath="yes"/>
          </Component>
        </Directory>
      </Directory>
    </Directory>
    <Feature Id="MainApplication" Title="Main Application" Level="1">
      <ComponentRef Id="Controllore.exe" />
      <ComponentRef Id="param.txt" />
    </Feature>
  </Product>
</Wix>