Wix安装程序错误2343

11

我一直在尝试为我的应用程序开发安装程序,决定将GUI更改为<UIRef Id="WixUI_InstallDir" />。根据我正在阅读的教程,如果使用该GUI,还需要包括<Property Id="WIXUI_INSTALLDIR" Value="TOP_LEVEL_DIR" />。但是,自从我更改了GUI并添加了这行代码后,我遇到了错误(2343)。下面是MSI日志,它抱怨一个位置?

错误: MSI(c)(CC:84)[13:27:33:140]:注意:1:2343 调试:错误2343:指定路径为空。 安装程序遇到意外错误安装此软件包。 这可能表示此软件包存在问题。 错误代码为2343。 参数为:,, MSI(c)(CC:84)[13:27:34:663]:产品:Viewer 1.0 -- 安装程序遇到意外错误安装此软件包。 这可能表示此软件包存在问题。 错误代码为2343。 参数为:,,

Action ended 13:27:34: WelcomeDlg. Return value 3.
MSI (c) (CC:DC) [13:27:34:672]: Doing action: FatalError
Action 13:27:34: FatalError. 
Action start 13:27:34: FatalError.
Action 13:27:34: FatalError. Dialog created
Action ended 13:27:36: FatalError. Return value 2.
Action ended 13:27:36: INSTALL. Return value 3.

代码:

<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
  <Product Name='Viewer 1.0' Id='*' UpgradeCode='PUT-GUID-HERE'
    Language='1033' Codepage='1252' Version='1.0.0' Manufacturer='Direct'>
    <Package Id='*' Keywords='Installer' Description="Viewer Installer"
      Comments='Installer is a registered trademark.' Manufacturer='Direct'
      InstallerVersion='100' Languages='1033' Compressed='yes' 
      SummaryCodepage='1252' />

    <Media Id='1' Cabinet='Sample.cab' EmbedCab='yes' DiskPrompt="CD-ROM #1" />
    <Property Id='DiskPrompt' Value="1.0 Installation [1]" />
    <Property Id="WIXUI_INSTALLDIR" Value="TOP_LEVEL_DIR" />

    <Directory Id='TARGETDIR' Name='SourceDir'>
      <Directory Id='ProgramFilesFolder' Name='PFiles'>
        <Directory Id='Direct' Name='DMD'>
          <Directory Id='INSTALLDIR' Name='Viewer'>

            <Component Id='MainExecutable' Guid='*'>
              <Shortcut Id="startmenuViewer" Directory="ProgramMenuDir" 
                        Name="Viewer" WorkingDirectory='INSTALLDIR' 
                        Icon="Viewer.exe" IconIndex="0" Advertise="yes" />
              <Shortcut Id="desktopViewer" Directory="DesktopFolder" 
                        Name="Viewer" WorkingDirectory='INSTALLDIR' 
                        Icon="Viewer.exe" IconIndex="0" Advertise="yes" />

              <File Id='EXE' Name='Viewer.exe' DiskId='1' 
                    Source='Viewer.exe' KeyPath='yes'>
              </File>
                <ProgId Id="DMDCCDAV" Description="Viewer">
                   <Extension Id="xml" >
                    <Verb Id="open" Argument="&quot;%1&quot;" 
                          TargetFile="EXE" />
                   </Extension>
                </ProgId>
            </Component>

          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="Viewer">
          <Component Id="ProgramMenuDir" Guid="*">
            <RemoveFolder Id='ProgramMenuDir' On='uninstall' />
            <RegistryValue Root='HKCU' 
                           Key='Software\[Manufacturer]\[ProductName]' 
                           Type='string' Value='' KeyPath='yes' />
          </Component>
        </Directory>
      </Directory>

      <Directory Id="DesktopFolder" Name="Desktop" />
    </Directory>

    <Feature Id='Complete' Title='Viewer Installation' 
             Display='expand' Level='1' ConfigurableDirectory='INSTALLDIR'>
    <Feature Id='MainProgram' Title='Viewer Program' 
             Description='The main executable.' Level='1'>
      <ComponentRef Id='MainExecutable' />
      <ComponentRef Id='ProgramMenuDir' />
    </Feature>
    </Feature>

    <UIRef Id="WixUI_InstallDir" />
    <UIRef Id="WixUI_ErrorProgressText" />

    <Icon Id="Viewer.exe" SourceFile="Viewer.exe" />

  </Product>
</Wix>
1个回答

21
<Property Id="WIXUI_INSTALLDIR" Value="TOP_LEVEL_DIR" /> 的值是你允许用户在 UI 对话框中设置的内容。在这种情况下,你将 TOP_LEVEL_DIR 作为你想要用户设置的目录的 ID,但你没有将其映射到任何相应的 Directory 标签。

假设你想要允许用户更改根安装目录,请将 WIXUI_INSTALLDIR 的值从 TOP_LEVEL_DIR 改为 INSTALLDIR

有关更多信息,请参见此参考文档


好的,那很有道理。那确实解决了我的问题。谢谢你。现在我要尝试默认文件关联和 .net 框架捆绑 :/ - Kyle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接