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