如何在WIX Installer中设置和获取更新的环境变量?

时间:2016-07-01 05:49:20

标签: batch-file wix

我正在使用WIX安装程序。

在安装的一个步骤中,我想要询问用户管理员密码,然后使用用户给定的值设置环境变量ADM_PASSWD。稍后在下一步中,我将运行一个.bat文件来设置IIS服务器,为此我需要这个ADM_PASSWD。

我知道运行一个.bat文件并不是一个好主意,这一切都很糟糕,但相信我,我别无选择。

我能够在读取变量和C#代码时设置它,我得到正确的值。

WIX代码:

<CustomAction Id="SetEnvVariableProperty" 
                  Property="ADM_PASSWD" 
                  Value="[PASSWORD]" />

<CustomAction Id="SetEnvVariable" 
                  Return="check" 
                  Execute="immediate" 
                  BinaryKey="CustomActions.dll"
                  DllEntry="SetEnvVariable" />



    <InstallExecuteSequence>
      <Custom Action="CheckLicense" Before="InstallFinalize" />

          <Custom Action="SetEnvVariableProperty" After="InstallFinalize"/>
      <Custom Action="SetEnvVariable" Before="InstallFinalize"/>

      <Custom Action="RunIISBat" Before="InstallFinalize"/>
    </InstallExecuteSequence>


 <CustomAction Id="RunIISBat"    
                  FileKey="filERSDRC087ADD4D68354E59268F31A3"
                  ExeCommand="&quot;c:\Program Files (x86)\App Location\&quot;"
                  Execute="deferred" 
                  Return="asyncWait"
                  Impersonate="no"
                  />

C#代码:

[CustomAction]
public static ActionResult SetEnvVariable(Session session)
{
      session.Log("Setting Environement Variable");
      String envName = "ADM_PASSWD";
      string envValue = session["ADM_PASSWD"].ToString();

      // Determine whether the environment variable exists.
      if (Environment.GetEnvironmentVariable(envName) == null)
      {
          session.Log(envName + " Does not exist !");
          // If it doesn't exist, create it.
          Environment.SetEnvironmentVariable(envName, envValue);
          session.Log("Setting ADM PASSWD To : " + envValue);
          session.Log(envName + " created !");
      }

         session.Log(Environment.GetEnvironmentVariable(envName).ToString());
         session.Log("Done Setting Environement Variable");
         return  ActionResult.Success;
}

但不知何故,我的.bat文件没有获得该变量。我不知道它是否被删除了?

0 个答案:

没有答案