Я пытаюсь сделать так, чтобы моя установка поддерживала установку как для пользователя, так и для машины. Я хочу, чтобы пользователь выбирал из пользовательского интерфейса с помощью переключателей, будет ли программное обеспечение устанавливаться для каждого пользователя или для каждой машины, и на основе этого выбора выбирать различные настраиваемые действия и разные файлы для копирования.
Я обнаружил, что могу просто использовать элемент util:XmlFile для изменения некоторых файлов, которые отличаются в зависимости от области установки, но проблема в том, что этот компонент запускается до того, как свойство будет изменено пользовательским интерфейсом. Вот фрагменты кода:
<Property Id='ADXLoaderPrivileges' Value='bla' />
<Directory Id="TARGETDIR" Name="SourceDir">
<Component Id="adxloader.dll.manifest" Guid="51FC65CB-BEAD-4423-A840-49C9CB22E191">
<File Id="adxloader.dll.manifest" Source="$(var.ExcelProjectDir)\Loader\adxloader.dll.manifest" DiskId="1" KeyPath="yes" />
<util:XmlFile Id="ModifyAdxLoaderManifest" Action="setValue"
ElementPath="/configuration/loaderSettings/@privileges" File="[TARGETDIR]\adxloader.dll.manifest" Value="[ADXLoaderPrivileges]" />
</Component>
</Directory>
<Dialog Id='AllUsersChoice' X='50' Y='50' Width='373' Height='287' Title='[ProductName]' TrackDiskSpace='yes'>
<Control Id='NextButton' Type='PushButton' X='300' Y='261' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}&Next >' TabSkip='no' Default='yes'>
<Publish Property='TARGETDIR' Value='[%ProgramFiles]\Manufacturer\ProductName\'><![CDATA[ALLUSERS=2]]></Publish>
<Publish Property='TARGETDIR' Value='[%APPDATA]\Manufacturer\ProductName\'><![CDATA[ALLUSERS=1]]></Publish>
<Publish Property='ADXLoaderPrivileges' Value='administrator'><![CDATA[ALLUSERS=2]]></Publish>
<Publish Property='ADXLoaderPrivileges' Value='user'><![CDATA[ALLUSERS=1]]></Publish>
</Control>
</Dialog>
Файлы устанавливаются в папку на основе значения свойства ALLUSERS, но XmlFile выполняется со значением «bla» вместо «administrator» или «user».
Кроме того, как я могу указать пользовательские действия, которые будут выполняться на основе этого выбора?