2014-02-11 7 views
0

я следующее условие для WIX установщика: - Начиная каталог установки для установки должны быть RootDirectory \ ApplicationName [C: \ MyApplication] - Пользователь должен иметь возможность настроить этот путь (с помощью pathedit или любого текстового поля)Wix Установка Каталог Настройка

Я выполнил следующий код, но проблема в том, что половина установки выполняется по указанному пути, а половина копий скопирована в корневой каталог.

<Fragment> 
<Property Id="_BrowseProperty" Value="INSTALLDIR" Secure="yes"/> 
<CustomAction Id="SetDataLocationDefault" Property="INSTALLDIR" Value="[WindowsVolume]$(var.Title)\" /> 
<InstallUISequence> 
    <Custom Action="SetDataLocationDefault" After="CostFinalize" /> 
</InstallUISequence> 
<InstallExecuteSequence> 
    <Custom Action="SetDataLocationDefault" After="CostFinalize" /> 
</InstallExecuteSequence> 

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="INSTALLDIR" Name="$(var.Title)"> 
    <Directory Id="ProgramMenuFolder"> 
     <Directory Id="ApplicationProgramsFolder" Name="$(var.Title)"/> 
    </Directory> 
    </Directory> 
    <Directory Id="DesktopFolder"/> 
</Directory> 

Еще один файл для компонента включает

<Fragment> 
<ComponentGroup Id="ProductInstallComponent"> 
    <ComponentRef Id="EXEPackage" /> 
    <ComponentRef Id="ProjectsOutput" /> 
    <ComponentRef Id="TempReports" /> 
    <ComponentRef Id="Help" /> 
    <ComponentRef Id="ApplicationShortcut" /> 
    <ComponentRef Id="ApplicationDeskShortcutComp" /> 
</ComponentGroup> 

в случае Помощь и файлы отчетов создаются на rootlocation. так как я могу это изменить?

ответ

0

AFAIK такое действие должно быть установлено доCostFinalize -action, так как впоследствии все каталоги установлены и не поддаются обработке. Также установите его в обеих последовательностях, как вы уже делали в примере выше. То есть это должно быть следующим:

<InstallUISequence> 
    <Custom Action="SetDataLocationDefault" Before="CostFinalize" /> 
</InstallUISequence> 
<InstallExecuteSequence> 
    <Custom Action="SetDataLocationDefault" Before="CostFinalize" /> 
</InstallExecuteSequence> 
+0

Извините ... это не сработало! Я также использовал pathedit в этой форме и, как упоминалось выше, если я использовал Before = «CostFinalize», чем весь продукт, установленный в папке [WindowsVolume] \ [ProductName]. –

Смежные вопросы