我使用Windows Installer XML生成了一个MSI文件,所选的对话框设置为" WixUI_Advanced"。 然后我想通过单击一个Button并将安装路径作为参数传递给MSI,从WPF窗口启动MSI。 所以我使用以下代码启动MSI:
Process proc = new Process();
proc.StartInfo.FileName = "msiexec";
string filePath = "C:\\experimente\\WpfTestApplication\\TestSetup\\bin\\Debug\\TestSetup.msi";
proc.StartInfo.Arguments = @"/i " + filePath + " INSTALLATIONPATH=C:\\workspace";
proc.Start();
在WIX-Project的Product.wxs中我定义了属性INSTALLATIONPATH:
C:\安装
后来我尝试在Id中设置给定参数,通常代表" ProgramFilesFolder":
<Directory Id="TARGETDIR"
Name="SourceDir">
<Directory Id="INSTALLATIONPATH">
<Directory Id="APPLICATIONFOLDER"
Name="TestApplication">
</Directory>
</Directory>
</Directory>
当我启动WPF-App并按下Button时,MSI启动,但安装路径仍然是programfiles文件夹。 请问有人告诉我,我做错了什么?
提前致谢, 帕特里克
答案 0 :(得分:0)
这很简单 - 如果你知道的话!
您需要 - 在您的MSI项目和您的应用程序旁边 - 一个名为p.e.的引导程序项目。 “BootstrapperSetup”。 在Bundle.wxs中你写道:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="ProsoftSetupForTest" Version="1.0.0.0" Manufacturer="prosoft GmbH" UpgradeCode="b6f80b17-7a36-425c-a1e5-9c9e7e500da2">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Variable Name="INSTALLFOLDER"
bal:Overridable="yes"
Type="string"
Value="[ProgramFilesFolder]"/>
<Chain>
<MsiPackage Vital="yes"
DisplayName="<The setup identifier for the program registry>"
Id="MsiId"
SourceFile="<The path of Your MSI">
<MsiProperty Name="TARGETDIR"
Value="[INSTALLFOLDER]\MyFolder" />
</MsiPackage>
</Chain>
</Bundle>
</Wix>
在您的MSI的Product.wxs中您有以下TARGETDIR条目:
<Directory Id="TARGETDIR"
Name="SourceDir">
</Directory>
然后重建您的解决方案,在Windows资源管理器中进入您的引导程序项目的Debug文件夹,启动DOS窗口并设置如下命令:
BootstrapperSetup.exe INSTALLFOLDER=C:\TestInstallation
这就是全部!