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
WiX:文件源混乱_Wix - Fatal编程技术网

WiX:文件源混乱

WiX:文件源混乱,wix,Wix,只是第一次尝试安装程序,有点混乱 本守则 <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="ProgramFilesFolder"> <Directory Id="FTSM" Name="FTSM"> <Directory Id="INSTALLFOLDER" Name="FCP" FileSource="..\FCP\bin\Debug\

只是第一次尝试安装程序,有点混乱

本守则

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
        <Directory Id="FTSM" Name="FTSM">
            <Directory Id="INSTALLFOLDER" Name="FCP" FileSource="..\FCP\bin\Debug\">
                <Component Id="MainExecutable">
                    <File Id="FCPEXE" Name="FCP.exe" Source="FCP.exe" KeyPath="yes"/>
                    <Shortcut Id="startMenuFCP" Directory="ProgramMenuDir" Name="FCP" WorkingDirectory="INSTALLDIR" Icon="FCP.exe" IconIndex="0" Advertise="yes"/>
                </Component>
            </Directory>
        </Directory>
    </Directory>
</Directory>
然后一切都完美地工作。我可以毫无错误地构建WiX项目,并生成一个按预期工作的安装程序

文件结构如下:

Main
-> FCP (Main Project)
--> bin
---> Debug
----> FCP.exe
-> Installer (WiX Project)
--> Product.wxs

显然,这对这个项目来说不是一个大问题,但是当我遇到多个组件时,一次指定文件源会更加方便。

因此,这确实是一个幸运的发现,但事实证明,如果您使用WiX项目中的references文件夹,那么就可以在wxs文件中进行一些整洁的引用

我引用了我的项目,然后可以执行以下操作:

<File Id="FCPEXE" Name="FCP.exe" Source="$(var.FCP.TargetDir)\FCP.exe" KeyPath="yes"/>

来自Bob Arnson的博客:

当您使用
文件/@Name
属性且不使用
文件/@Source
属性
,编译器构造一个指向基于 在文件的父组件目录上加上您提供的名称

因此,当存在
File/@Source
时,WiX将使用它,而不管任何
目录/@FileSource
,如果不存在,则通过组合
目录/@FileSource
文件/@Name
来构建源路径

<File Id="FCPEXE" Name="FCP.exe" Source="$(var.FCP.TargetDir)\FCP.exe" KeyPath="yes"/>