2013-02-22 70 views
6

我正在用自定义用户界面创建一个WPF设置应用程序。我开始与布莱恩P.约翰斯顿的教程:http://bryanpjohnston.com/2012/09/28/custom-wix-managed-bootstrapper-application/WiX:如何访问/更改托管引导程序中的安装目录?

某处在我看来,我有一个简单TextBox结合到物业InstallationPath在我MainViewModel

现在我想,当用户点击“安装”要使用此路径。为此,我有一个按钮绑定到我的InstallCommand。下面的方法被调用(直接从本教程获取):

private void InstallExecute() 
{ 
    Bootstrapper.Engine.Plan(LaunchAction.Install); 
} 

我怎样才能让包被安装到我的财产InstallationPath的目录?


编辑:

我发现了一个类似的问题在这里#2:

Specify the INSTALLLOCATION of packages in WiX inside the Burn managed bootstrapper

答案有来自鲍勃Arnson

使用的MsiProperty孩子每MsiPackage指定INSTALLLOCATION = [BurnVariable]。然后使用Engine.StringVariables设置BurnVariable。

现在,我想我可以进入StringVariables在我InstallExecute这样

private void InstallExecute() 
{ 
    Bootstrapper.Engine.StringVariables["BurnVariable"] = InstallationPath; 
    Bootstrapper.Engine.Plan(LaunchAction.Install); 
} 

但是,在定义这个变量?我想在Product.wxs的某个地方?

+0

喂迈克尔,我遵循了这一相同的教程,我在那里面临重大升级过程中,先前的exe文件是没有得到新的一个并排安装删除的问题。我增加了EXE版本和附带的MSI版本。我看到一些其他人在教程下面评论同样的问题。你遇到过这个问题吗?如果是的话,你是如何克服它的? :(需要一些帮助人 – mayooran 2016-04-27 02:31:58

回答

8

是只需在您的刻录引导程序创建一个变量:

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

然后你可以通过这个作为参数传递给您的自举MSI软件包:

<MsiPackage SourceFile="$(var.YourMsiProject.Installer.TargetPath)" Compressed="no"> 
    <MsiProperty Name="INSTALLLOCATION" Value="[BurnVariable]" />   
</MsiPackage> 
+0

谢谢!这就是我正在寻找的。:-) – 2013-02-22 16:20:37

1

一人失踪属性“类型”在Bundle变量元素上。 caverman_dick是正确的,但不能正常工作时不可覆盖。 你也可以试试这个,设置Type =“string”。

Wix Variable Element

<Wix>...<Bundle>... 
    <Variable Name="MyApplicationMsiInstallFolder" Value="[WindowsVolume]MyApplication" 
      bal:Overridable="yes" Type="string"/> 
    <Chain> 
     <?if $(var.DbVersion) = false?> 
     <PackageGroupRef Id="AccessDatabaseGroup"/> 
     <RollbackBoundary /> 
     <?endif?> 
     <MsiPackage Id="MyApplicationMsiPackage" SourceFile="$(var.MyApplicationSetup.TargetPath)" DisplayInternalUI="no" 
           Vital="yes" > 
      <MsiProperty Name="APPLICATIONFOLDER" Value="[MyApplicationMsiInstallFolder]"/> 
     </MsiPackage> 
    </Chain> 
</Bundle></Wix> 
相关问题