c# – 如何使用除Program Files文件夹之外的wix安装程序在自定义文件夹中安装应用程序

我使用wix创建了一个安装程序.默认情况下,应用程序安装在Program Files文件夹下.我需要在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>

我收到以下错误“错误LGHT0094:未分辨的参考符号’目录:INSTALLFOLDER’部分’片段:’”.

更新:

<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>

这给了我另一个错误“错误LGHT0204:ICE99:目录名称:WindowsVolume与其中一个MSI公共属性相同,可能会导致无法预料的副作用.”.用Google搜索并审阅thisthis以解决此问题.但不能正常工作我,仍然得到与“错误LGHT0204:ICE99:目录名称:WindowsVolume与MSI公共属性之一相同并且可能导致无法预料的副作用相同的错误.”.任何想法会出现什么问题.

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:INSTALLFOLDER和INSTALLLOCATION.选择一个并在两个地方使用它.

相关文章
相关标签/搜索