如何将安装路径作为参数传递给使用WIX创建的MSI文件

时间:2014-09-18 12:46:43

标签: c# wpf wix

我使用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文件夹。 请问有人告诉我,我做错了什么?

提前致谢, 帕特里克

1 个答案:

答案 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

这就是全部!

相关问题