3

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

在此处输入图像描述 在此处输入图像描述 点击下一步显示上面的错误

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

Product.wxs 包含

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

蜡文件

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

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

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

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

4

2 回答 2

4

我使用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”

于 2016-01-19T09:25:18.470 回答
1

要查看实际错误,必须使用运行安装 msiexec /i SoftwareSetup.msi /L*V C:\logs\<logfilename>.log

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

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

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

但是,要获得确切的失败,请使用misexec我在第一条语句中提到的方式运行您的应用程序。

于 2020-08-13T14:26:17.173 回答