WiX 错误构建目标

Posted

技术标签:

【中文标题】WiX 错误构建目标【英文标题】:WiX error build target 【发布时间】:2015-06-03 13:57:20 【问题描述】:

我正在尝试使用 WiX 和 MSBuild 命令创建我的 MSI 设置,该命令将我的 img.png 部署到一个目录中,但我遇到了这个错误:

"MSB4019: 项目导入"C:\Program Files\MSBuild\Microsoft\WiX\v[[Version.Major]].x\Wix.targets" 不是 成立。 " 确保声明路径正确

在这一行:

<Import Project="$(WixTargetPath)" />

这是我的 2 个文件(test.wixproj 和 test.wxs):

test.wixproj

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
                <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
                <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
                <ProductVersion>3.0</ProductVersion>
                <ProjectGuid></ProjectGuid>
                <SchemaVersion>2.0</SchemaVersion>
                <OutputName>WixProject1</OutputName>
                <OutputType>Package</OutputType>
                <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v[[Version.Major]].x\Wix.targets</WixTargetsPath>
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
                <OutputPath>bin\$(Configuration)\</OutputPath>
                <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
                <DefineConstants>Debug</DefineConstants>
        </PropertyGroup>
        <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
                <OutputPath>bin\$(Configuration)\</OutputPath>
                <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
        </PropertyGroup>
        <ItemGroup>
                <Compile Include="C:\testW2.wxs" />
        </ItemGroup>
        <Import Project="$(WixTargetsPath)" />
    </Project>

test.wxs

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" UpgradeCode="" Version="1.0.0.0" Language="1033" Name="My Application Name" Manufacturer="My Manufacturer Name">
        <Package InstallerVersion="300" Compressed="yes"/>
        <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" />


        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="APPLICATIONROOTDIRECTORY" Name="Application test"/>
            </Directory>
        </Directory>


        <DirectoryRef Id="APPLICATIONROOTDIRECTORY">
            <Component Id="myimg" Guid="">
                <File Id="myimg" Source="C:\img.png" KeyPath="yes" Checksum="yes"/>
            </Component>

        </DirectoryRef>


        <Feature Id="MainApplication" Title="Main Application" Level="1">
            <ComponentRef Id="myimg" />
        </Feature>
    </Product>
</Wix>

我不明白问题出在哪里,我找不到没有 VisualStudio 的关于 WiX 的简单教程。

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

你的项目文件有两个问题:

    &lt;WixTargetPath ...&gt; 行 [[MajorVersion]] 应替换为“3”, &lt;Compile...&gt; 行应引用正确的文件“Test.wxs”。

试试这个项目文件:

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
            <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
            <Platform Condition=" '$(Platform)' == '' ">x86</Platform>
            <ProductVersion>3.0</ProductVersion>
            <ProjectGuid></ProjectGuid>
            <SchemaVersion>2.0</SchemaVersion>
            <OutputName>WixProject1</OutputName>
            <OutputType>Package</OutputType>
            <WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
            <OutputPath>bin\$(Configuration)\</OutputPath>
            <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
            <DefineConstants>Debug</DefineConstants>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
            <OutputPath>bin\$(Configuration)\</OutputPath>
            <IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
    </PropertyGroup>
    <ItemGroup>
            <Compile Include="test.wxs" />
    </ItemGroup>
    <Import Project="$(WixTargetsPath)" />
</Project>

您还需要确保 test.wxsUpgradeCode 属性中具有 GUID。

【讨论】:

哦,谢谢,它有效。但是您知道如何更改要安装的目录,这里是 C\Programmfiles\myapplication 吗?例如,我会 C:\Documents and settings\toto\Desktop。或者如果我想在一个文件夹中安装 2 个文件,在另一个文件夹中安装另外 2 个文件? WIX 工具集有关于此主题的良好文档wixtoolset.org/documentation/manual/v3/howtos/…。如果这无助于尝试在 Stack Overflow 上搜索 WIX 目录上的现有问题。如果在此之后您找不到答案,请提出一个新问题。注意:评论不是新问题的正确位置。 是的,对不起,我目前正在阅读文档和堆栈溢出问题。谢谢大家。

以上是关于WiX 错误构建目标的主要内容,如果未能解决你的问题,请参考以下文章

即使使用 --no-build 标志运行 dotnet test 时如何避免 Wix 构建错误?

WiX 构建在 TFS 中失败但在本地工作

Wix 快速开发安装包程序 5分钟构建一个最轻量的安装包程序

WiX:错误 RegistryKey 元素包含意外属性“ForceDeleteOnUninstall”

需要将 Wix 项目集成到日常构建中

如何在 Wix 中使用 JavaScript 代码构建动态搜索表单?