WIX - 如何在使用自定义引导程序WPF UI时在Msi中设置属性

时间:2016-03-17 07:19:31

标签: c# wix

我有大约6到7个应用程序包含网站和打包到一个捆绑包中的Windows服务,为此我开发了带有WPF引导程序应用程序的自定义UI,我需要从用户那里获取一些输入,如虚拟目录名,安装位置,SQL凭据等。

现在的问题是当我尝试从wpf Ui设置虚拟目录名并通过设置msi属性从bundle传递到msi时,msi中的属性没有更新

以下是我的代码段

在product.wxs中,我已经定义了属性和目录结构,如下所示

 <Property Id="TARGETDIRECTORY" Value="test"/>
    <Directory Id='TARGETDIR' Name='SourceDir'>
     <Directory Id="IISROOT" Name='WebDir'>
     <Directory Id='INSTALLDIR'   Name='[TARGETDIRECTORY]'>

在bundle.wxs中

<Variable bal:Overridable="yes" Name="TargetDirectory" Value="test"/>
 <MsiPackage Id="TESTSERVER" SourceFile="$(var.Gac.TEST.Setup.Server.TargetPath)" Visible="yes"  DisplayInternalUI="no">
<MsiProperty Name="TARGETDIRECTORY" Value="[TargetDirectory]"/>
       </MsiPackage>

在Bootstraper中

engine.StringVariables["TargetDirectory"] = "XYZ";

安装时,虚拟目录的名称为TARGETDIRECTORY,而不是xyz。我是wix的新手,任何人都可以指导我实现这一目标,请让我知道我在哪里做错了

2 个答案:

答案 0 :(得分:0)

I pass some of the properties from cmd , and some i read from xml document and set them.


using (var p = new Process())
                {
                    var info = new ProcessStartInfo
                    {
                        WindowStyle = ProcessWindowStyle.Hidden,
                        FileName = @"C:\Windows\System32\cmd.exe",
                        Arguments = string.Format("/c msiexec /i \"{0}\\{6}.msi\" PATHNAME=\"{0}\" SSLCERTPATH=\"{1}\"" +
                        " MSINEWINSTANCE=1 TRANSFORMS=\":{2}\" USERPATH={3} ENVIRONMENTPATH={4} SSLCERTPASS=\"{5}\" /L*v \"{0}\\{6}Log.txt\""
                        , XmlSettings.EnvironmentFolderPath, FindCertificates.SslCertPath, environment, XmlSettings.IisUserFolderPath,
                        XmlSettings.EnvironmentFolderPath, FindCertificates.SslCertPass, msiName),
                        UseShellExecute = false,
                        CreateNoWindow = true
                    };
                    p.StartInfo = info;
                    p.Start();
                    p.WaitForExit();
                }

答案 1 :(得分:0)

现在我可以使用自定义操作设置INSTALLDIR名称。

在自定义操作中,我正在设置xml所需的属性值