代码之家  ›  专栏  ›  技术社区  ›  Dominic Jonas

WIX在x86/x64输出目录中找不到app.exe

  •  1
  • Dominic Jonas  · 技术社区  · 5 年前

    我有一个C应用程序,它的构建目标是x86或x64。生成输出是(例如) ProjectDir/bin/x86|x64/Debug|Release/*

    在我的 *.wxs 我定义了以下变量的文件

    <?define AppTargetPath = "$(var.MyApp.TargetPath)" ?>

    哪些指向 ProjectDir/bin/Debug|Release/app.exe

    如果我构建安装程序,它会失败,因为它找不到我的app exe

    <File Id="AppExe" Source="$(var.AppTargetPath)" KeyPath="yes"/>

    如果我看着 使用项目引用和变量 站点( http://wixtoolset.org/documentation/manual/v3/votive/votive_project_references.html )我找不到另一个变量。

    2 回复  |  直到 5 年前
        1
  •  0
  •   Stein Åsmul    5 年前

    也许试试这个:

    1. 注释掉你现有的定义。
    2. 将生成exe和wix项目的项目添加到同一解决方案中。
    3. 添加从wix项目到exe/binary项目的引用。
    4. 尝试此标记(替换项目名称 "TestConsoleApplication" 与你的):

      <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
         <Component>
          <File Source="$(var.TestConsoleApplication.TargetPath)" />
         </Component>
        </ComponentGroup>
      </Fragment>
      
    5. 重建所有。
    6. 切换发布和调试版本,然后重新生成所有版本。

    链接:

        2
  •  0
  •   Dominic Jonas    5 年前

    实际上,我通过将整个路径放在wxs文件的顶部来解决这个问题:

    <?define AppTargetFileName = "$(var.myApp.TargetFileName)" ?>
    
    <?if $(var.Platform) = x64 ?>
      <?define AppTargetPath = "$(var.myApp.ProjectDir)\bin\x64\$(var.myApp.Configuration)\$(var.AppTargetFileName)" ?>
    <?elseif  $(var.Platform) = x86 ?>
      <?define AppTargetPath = "$(var.myApp.ProjectDir)\bin\x86\$(var.myApp.Configuration)\$(var.AppTargetFileName)" ?>
    <?else ?>
      <?define AppTargetPath = "$(var.myApp.TargetPath)" ?>
    <?endif ?>