2014-12-27 4 views
1

Мне нужно разрешить пользователю изменять местоположение установки. Я пробовал решение, данное в этом questionWiX- Как разрешить пользователю изменять местоположение установки на загрузочном устройстве

Мне нужно добавить мой файл wix msi в мой проект bootstrapper. ниже это мой код проекта MSI,

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate /> 

    <Feature Id="ProductFeature" Title="SetupProject1" Level="1"> 
     <ComponentRef Id="ProductComponent" /> 
    </Feature> 
</Product> 

<Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir" src="[TARGETDIR]"> 
      <Directory Id="INSTALLFOLDER" Name="SetupProject1"> 
     <Component Id="ProductComponent" Guid="2ACAD378-270B-4B50-AAED-A234A6BB8276"> 
     <File Name="$(var.WindowsFormsApplication2.TargetFileName)" Source="$(var.WindowsFormsApplication2.TargetPath)" /> 
     </Component> 
    </Directory> 
    </Directory> 
</Fragment> 

<Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
    </ComponentGroup> 
</Fragment> 

и ниже код Загрузчик,

<Variable Name="varInstallLocation" bal:Overridable="yes" /> 

    <Chain> 
    <MsiPackage 
    Id="MyService" 
    Name="MyService" 
    SourceFile="..\SetupProject1\bin\Release\SetupProject1.msi" 
    DisplayInternalUI="yes" 
    EnableFeatureSelection="yes" 
    Compressed="yes" 
    Vital="yes" > 
    <MsiProperty Name="TARGETDIR" Value="[varInstallLocation]"/> 
    </MsiPackage> 
    </Chain> 
</Bundle> 

ответ

2

Вы используете стандартный загрузчик? RtfLicense или HyperlinkLicense?

Если вы установили SuppressOptionsUI="no" в стандартном буксировочном аппарате Wix, на нем появится кнопка параметров, которая позволит пользователю изменить местоположение установки вручную.

<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"> 
    <bal:WixStandardBootstrapperApplication 
    SuppressOptionsUI="no" 
    /> 
</BootstrapperApplicationRef> 

Тогда как вы упомянули установку свойство MSI в пакете MSI, это будет перезаписан с местоположением пользователь выбрал.

<MsiProperty Name="INSTALLFOLDER" Value="[InstallFolder]" /> 

Если вы хотите установить установочное место по умолчанию, установите переменную в комплекте в значение по умолчанию.

<Variable Name="InstallFolder" Type="string" Value="[ProgramFilesFolder]Install"/> 
+0

Я не могу установить местоположение установки по умолчанию. Я использую шаблон RtfLicense, и я устанавливаю переменную (внутри Bundle, но вне Chain), но исходная папка установки пуста. – bubi

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