如何使用Wix安装程序在自定义文件夹中安装应用程序,而不是程序文件文件夹

本文关键字:程序 安装 文件夹 文件 应用程序 何使用 自定义 Wix | 更新日期: 2023-09-27 18:30:53

我使用wix创建了一个安装程序。默认情况下,应用程序安装在"程序文件"文件夹下。我需要在目录下为我的应用程序创建一个文件夹c:并在其中安装我的应用程序。

<Fragment>
      <Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="WINDOWSVOLUME" >
    <Directory Id="INSTALLLOCATION" Name="WIXDemoApp">
    </Directory>
  </Directory>
</Directory>
<SetDirectory Id="WINDOWSVOLUME" Value="c"/>

<Fragment>
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
        <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
         <Component Id="MyApplication.exe">
     <File Source="$(var.MyApplication.TargetPath)" Name="MyApp.exe" Id="MYAPPEXE" KeyPath="yes"  />
            <!-- TODO: Insert files, registry keys, and other resources here. -->
         </Component> 
    </ComponentGroup>
</Fragment>

我收到以下错误" error LGHT0094: Unresolved reference to symbol 'Directory:INSTALLFOLDER' in section 'Fragment:' "。

更新:

<Fragment>
          <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="WindowsVolume" >
        <Directory Id="INSTALLLOCATION" Name="WIXDemoApp">
        </Directory>
      </Directory>
    </Directory>
    <SetDirectory Id="WindowsVolume" Value="c"/>
  </Fragment>
    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLLOCATION">
            <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
             <Component Id="MyApplication.exe">
         <File Source="$(var.MyApplication.TargetPath)" Name="MyApp.exe" Id="MYAPPEXE" KeyPath="yes"  />
                <!-- TODO: Insert files, registry keys, and other resources here. -->
             </Component> 
        </ComponentGroup>
    </Fragment>

这给了我另一个错误"error LGHT0204: ICE99: The directory name: WindowsVolume is the same as one of the MSI Public Properties and can cause unforeseen side effects."。谷歌搜索并参考了这个和这个来解决这个问题。但是对我不起作用,我仍然收到与"错误LGHT0204:ICE99:目录名称:WindowsVolume 与 MSI 公共属性之一相同的错误,可能会导致不可预见的副作用。知道会有什么问题。

如何使用Wix安装程序在自定义文件夹中安装应用程序,而不是程序文件文件夹

Windows Installer区分大小写,因此WINDOWSVOLUME不起作用。你可以做这样的事情:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramFilesFolder">
      <Directory Id="INSTALLLOCATION" Name="SetupProject1" />
    </Directory>
  </Directory>
  <SetDirectory Id="INSTALLLOCATION" Value="[WindowsVolume]SetupProject1" />
</Fragment>

对于第二个错误,您混合了两个不同的 ID:INSTALLFOLDERINSTALLLOCATION 。选择一个并在两个地方使用它。

我在 kentie.net 上找到了这个技巧 - Wix 提示和技巧。提示说使用WINDOWSVOLUME ID。

目标目录和系统分区

尝试安装到系统驱动器根目录的子目录时 (例如'C:''application'),假设在某些东西中是有意义的 喜欢

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="INSTALLLOCATION" Name="SetupProject1">
    </Directory>
</Directory>

TARGETDIR 是指系统分区,因为 ProgramFilesFolder 是 总是作为TARGETDIR的孩子给予。事实并非如此;塔吉迪尔 是具有最多可用磁盘空间的分区。它甚至可以是一个 外部硬盘驱动器上的分区。将其设置为真正的系统 分区,请使用以下方法:

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="WINDOWSVOLUME" >
        <Directory Id="INSTALLLOCATION" Name="SetupProject1">
        </Directory>
    </Directory>
 </Directory>
<SetDirectory Id="WINDOWSVOLUME" Value="[WindowsVolume]"/> 

SetDirectory 元素 是必需的,因为尝试使用WindowsVolume直接导致

错误 LGHT0204: ICE99: 目录名称: WindowsVolume 与 MSI 公共属性之一相同,可能会导致不可预见的副作用。 签署微星