2015-04-11 8 views
1

У меня есть программа установки wix для моего приложения. Все работает правильно, за исключением случаев, когда я выбираю Установите для всех пользователей на машине в следующем диалоговом окне выберите каталог установки и получите ошибку.Wix custom install directory Ошибка 2727

enter image description here enter image description here Нажмите Далее, показывает ошибку выше

установщика Windows, дает следующие данные 2727 Запись каталога «2» не существует в таблице Directory.

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> 

Если я не хожу к продвинутому, все работает отлично. Приложение установлено для всех пользователей.

Я искал повсюду, не нашел, что это происходит.

Пожалуйста, помогите, что я пропустил здесь.

ответ

2

Я исправил ошибку 2727, используя APPLICATIONFOLDER.

перед:

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

Дополнение: это странно, но вероятно, при использовании 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»