2016-03-02 5 views
0

Вот мой код, чтобы заполнить свою сессию в ManagedUI от:Pass вход пользователя из ManagedUI в CustomAction в WixSharp

void next_Click(object sender, EventArgs e) 
{ 
    MsiRuntime.Session["PASSWORD"] = password.Text; 
    MsiRuntime.Session["DOMAIN"] = domain.Text; 

    Shell.GoNext(); 
} 

и вот мой CustomAction:

public class CustomActions 
{ 
    [CustomAction] 
    public static ActionResult InstallService(Session session) 
    { 
     MessageBox.Show(session["Password"]); // always shows an empty message 
     return ActtionResult.Success; 
    } 
    ... 

Я до сих пор не понял, что случилось с моим кодом? Я заполнил данные в сессии, но я не могу получить к нему доступ в CustomAction.

ответ

-2

Вы должны отправить свои объекты через команду promp.For Например:

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(); 
       } 

Тогда в проекте WXS:

<Property Id="SITEPHYSPATH" Hidden="yes"/> 
    <Property Id="USERPATH" Hidden="yes"/> 
    <Property Id="ENVIRONMENTPATH" Hidden="yes"/> 
    <Property Id="THUMBPRINT" Hidden="yes"/> 
    <Property Id="PATHNAME" Hidden="yes" /> 

Последний набор ваших объектов в пользовательских действий:

var thumbprint = session["THUMBPRINT"]; 
+0

OP попросил WixSharp, не простой Wix. Следовательно, весь этот ответ неверен и в большинстве случаев представляет собой шаги, которые необходимо «перевести» в «синтаксис» WixSharp (если можно так называть C# -подобный код сценария) – Yoda

0

В вашем CustomAction это должно быть:

MessageBox.Show(session["PASSWORD"]); //upper case "PASSWORD" instead of "Password" 

Открытые имена свойств должны быть прописными (поскольку вы устанавливаете свойство в диалоговом окне, которое вы хотите передать в последовательность установки, оно должно быть общедоступным).

http://www.advancedinstaller.com/user-guide/properties.html