【问题标题】:Wix custom install directory Error 2727Wix 自定义安装目录错误 2727
【发布时间】:2015-04-11 07:25:17
【问题描述】:

我为我的应用程序创建了一个 wix 安装程序。 一切正常,除非我在下一个对话框中选择为机器上的所有用户安装,然后我选择了安装目录并出现错误。

点击下一步显示上面的错误

Windows 安装程序提供以下详细信息 2727 Directory 表中不存在目录条目'2'。

Product.wxs 包含

<UI>
      <UIRef Id="WixUI_ErrorProgressText" />
      <UIRef Id="UISequence" />
    </UI>

Wix 文件

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Fragment>
    <!--Adding dialogs-->
    <UI Id="UISequence">
      <Property Id="ApplicationFolderName" Value="AppName" />
      <Property Id="WixAppFolder" Value="WixPerMachineFolder" />
      <UIRef Id="WixUI_Advanced"/>
      <Publish Dialog="ExitDialog"
    Control="Finish"
    Event="DoAction"
    Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>

    </UI>

    <!--Including License agreement-->
    <WixVariable Id="WixUILicenseRtf" Value="license.rtf" />
    <!--<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />-->

    <!--Exit Dialog-->
    <Property Id="WIXUI_EXITDIALOGOPTIONALTEXT" Value="Thank you for installing this product." />

    <!--Provide Launch Application Option-->
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch AppName" />
    <Property Id="WixShellExecTarget" Value="[#AppExeName.exe]" />
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes"/>

  </Fragment>
</Wix>

如果我不去高级,一切正常。已为所有用户安装应用程序。

我四处张望,还没有发现你正在发生这种情况。

请帮忙,我在这里错过了什么。

【问题讨论】:

    标签: visual-studio-2013 wix wix3.9


    【解决方案1】:

    我使用 APPLICATIONFOLDER 修复了错误 2727。

    之前:

        <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="ProgramFilesFolder">
          <Directory Id="CompanyFolder" Name="Company">
           <Directory Id="InstallFolder" Name="MyProgram"/>
          </Directory>
         </Directory>
        </Directory>
    

    之后:

        <Directory Id="TARGETDIR" Name="SourceDir">
         <Directory Id="ProgramFilesFolder">
          <Directory Id="CompanyFolder" Name="Company">
           <Directory Id="APPLICATIONFOLDER" Name="MyProgram"/>
          </Directory>
         </Directory>
        </Directory>
    

    补充: 这很奇怪,但在使用 WIXUI 时很可能:

    <UI Id="MyWixUI_Mondo">
      <UIRef Id="WixUI_Advanced" />
    </UI>    
    

    最好这样做:

    <Property Id="ApplicationFolderName" Value="Company\MyProgram" />
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="APPLICATIONFOLDER" Name="Anything"/>
      </Directory>
    </Directory>
    

    实际的 WIXUI 安装文件夹将是“Program Files\Company\MyProgram”,而不是“Program Files\Anything”

    【讨论】:

      【解决方案2】:

      要查看实际错误,必须使用以下命令运行安装 msiexec /i SoftwareSetup.msi /L*V C:\logs\&lt;logfilename&gt;.log

      在我有 2727 并且不知道的情况下,我使用上面的命令运行了我的 msi,并在日志中清楚地说明了

      **错误 2727 是“目录条目 '[XYZ]' 不存在于 目录表**

      所以有一个为目录 XYZ 设置目标路径的发布事件,但它出现在 product.wxs 的目录结构/条目中。 所以我不得不删除不必要的设置目标路径发布事件,一切都很好。

      但是,如我在第一个语句中提到的那样,使用 misexec 运行您的应用程序的确切失败是什么。

      【讨论】:

      • 很好的解释@jeril
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多