[英]WIX - How to Set Properties in Msi when using Custom Bootstrapper WPF UI
我大約有6到7個應用程序包含網站和Windows服務,它們打包在一起,為此,我開發了帶有WPF引導程序應用程序的自定義UI,其中我需要從用戶那里獲取一些輸入,例如虛擬目錄名稱,安裝位置,SQL憑證等
現在的問題是,當我嘗試通過wpf Ui設置虛擬目錄名稱並通過通過msi屬性進行設置從捆綁包傳遞給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的新手,誰能指導我實現這一目標,請讓我知道我做錯了什么
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();
}
現在,我可以使用自定義操作設置INSTALLDIR名稱。
在自定義操作中,我正在從xml設置所需的屬性值
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.