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工具集赢得';当应用程序为64位时,不要在64位程序文件文件夹中安装WPF应用程序_C#_Wix - Fatal编程技术网

C# Wix工具集赢得';当应用程序为64位时,不要在64位程序文件文件夹中安装WPF应用程序

C# Wix工具集赢得';当应用程序为64位时,不要在64位程序文件文件夹中安装WPF应用程序,c#,wix,C#,Wix,环境: Visual Studio 2019 Wix工具集-最新版本 WPF.Net Framework 4.8 开发操作系统-Windows 10 Pro 64位 我已将project平台设置为x64,并将Wix中的文件夹设置为ProgramFiles64文件夹,但它一直安装到程序文件(x86)。我错过了什么 <?xml version="1.0" encoding="UTF-8"?> <Wix xmlns="http://

环境:
Visual Studio 2019
Wix工具集-最新版本
WPF.Net Framework 4.8
开发操作系统-Windows 10 Pro 64位

我已将project平台设置为x64,并将Wix中的文件夹设置为
ProgramFiles64文件夹
,但它一直安装到
程序文件(x86)
。我错过了什么

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"><?define WpfApp1_TargetDir=$(var.WpfApp1.TargetDir)?>
    <Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="RCS" UpgradeCode="68c32f22-6310-415f-abb5-2027e3825dfc">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate EmbedCab="yes" CompressionLevel="high" />

        <Feature Id="ProductFeature" Title="SetupProject1" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFiles64Folder">
                <Directory Id="INSTALLFOLDER" Name="SetupProject1" />
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <Component Id="WpfApp1.exe" Guid="7cb2f935-47b4-4df8-9112-742b3f6c8569">
              <File Id="WpfApp1.exe" Name="WpfApp1.exe" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe" />
            </Component>
            <Component Id="WpfApp1.exe.config" Guid="66fdfbdd-5089-4fc9-9742-30a0d914b738">
              <File Id="WpfApp1.exe.config" Name="WpfApp1.exe.config" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe.config" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

Candle.exe(-arch):WiX显然可以为您处理此问题,而无需为每个组件硬编码平台属性:

  • 1)
    将-arch开关传递到
    candle.exe
    命令行或
  • 2)
    .wixproj MSBuild项目中设置
    属性
x64
指定为
-arch
candle.exe将自动将组件设置为64位(无需硬编码)

对于64位软件包中的任何32位组件,请设置
Win64='no'
(如果编译32位版本的安装程序,也可以使用)


可能尝试将
Win64=“yes”属性添加到您的组件中(前提是它们是64位组件),并将
x64添加为平台(在WiX下方使用简化标记,-向下滚动到标记图示):


执行此操作后,请确保测试任何32位C#自定义操作。我似乎记得一些捕熊器。我现在只记得——我害怕。请测试一下


链接

  • (否,未弃用)

这很有效,但我有很多文件,我是否需要手动将其添加到每个组件中?我想我可以搜索和替换,但是……你们有多少组件并不是说我在这方面有很多经验()。(不是我的)。大约600个部件完全不需要:
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" Platform="x64" />

<..>

<Component Feature="ProductFeature" Win64="yes">
   <File Source="C:\Windows\Notepad.exe" />
</Component>