Вы можете отправить свои значения из командной строки.
Ваш WinForm:
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.Start();
p.WaitForExit();
}
И в WXS:
<Property Id="SITEPHYSPATH" Hidden="yes"/>
<Property Id="USERPATH" Hidden="yes"/>
<Property Id="ENVIRONMENTPATH" Hidden="yes"/>
<Property Id="PATHNAME" Hidden="yes" />
Тогда последний в пользовательских действий вы можете сделать что-нибудь с вашими ценностями, но сначала установить их:
var userpath = session["USERPATH"];