WIX: изменить каталог установки из параметра класса С#?

Я создаю мастер установки, и у меня есть страница, где вы можете выбрать, куда вы хотите установить программу. В моем классе С# у меня есть InstallPath, в котором хранится точный каталог, в который я хочу установить программу.

По умолчанию это c:\Program Files.

В моем установочном файле WiX у меня есть это:

<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
      <Directory Id ="Folder" Name="SomeFolder"/>
    </Directory>
</Directory>

Моя проблема в том, что я не знаю, как сказать этой установке Wix установить в InstallPath. Например, если InstallPath изменен на D:\SomeFolder\Here, я хочу снова установить там, а не в Program Files.


person Emanuela    schedule 10.09.2013    source источник
comment
Если вы используете приложение для запуска установщика, то в этот момент оно не имеет ничего общего с WiX. Программа установки WiX создает пакеты установщика Windows. Вам потребуется ознакомиться с документацией по API-интерфейсу установщика Windows (например, msiexec.exe), который вы используете для передачи значения свойства для SOMEFOLDER (должно быть все в верхнем регистре, чтобы оно было общедоступным). Вы также можете рассмотреть проект WiX Bootstrapper для драйвера установщика.   -  person Tom Blodget    schedule 13.09.2013


Ответы (2)


Вы можете использовать одно из этих дополнительных действий, чтобы изменить значение свойства во время установки:

  1. настраиваемое действие, которое изменяет значение свойства каталога, запланированное до CostFinalize
  2. пользовательское действие типа 35, которое изменяет путь к каталогу (должно быть запланировано после CostFinalize)

Например:

<CustomAction Id="ChangeDir" Directory="INSTALLFOLDER" Value="[SomeValueorPropertyhere]"/>

2. Запланируйте действие на этапе InstallExecution (должно быть после этапа CostFinalize):

<Custom Action="ChangeDir" After="CostFinalize"></Custom>
person Isaiah4110    schedule 10.09.2013

изменить путь:

<Product Id="*"> 
    <Property Id="ROOTDRIVE">
        <![CDATA[D:\]]>
    </Property>
</Product>

а для нового пути D:\SomeFolder\Here будет примерно так.

<Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="SomeFolder" Name="SomeFolder">
        <Directory Id="INSTALLFOLDER" Name="Here"/>
    </Directory>
</Directory>

Привет,

person neilmas    schedule 02.04.2014