2012-01-19 2 views
0

d'abord tout cela est très similaire à la question adressée Custom Action in C# used via WiX fails with error 1154action personnalisée a renvoyé le code d'erreur réelle 1154 lors de l'utilisation Wise Studio Installer 7.0

Cependant, je ne pouvais discerner des mesures spécifiques pour résoudre le problème dans ma situation. J'espère que quelqu'un peut me diriger dans la bonne direction.

Dans mon cas, j'utilise Wise Installation Studio 7.0 pour exécuter une action personnalisée C# que j'ai écrite pour démarrer la fonctionnalité Gestionnaire de serveur pour .Net Framework 3.5 SP1 sur Server 2008 R2 et plus récent.

J'ai créé l'action personnalisée dans Visual Studio 2010 en tant que bibliothèque de classes .Net 2.0 standard. Je suppose que j'ai besoin de faire quelque chose de différent ici - que cela doit être compilé comme quelque chose d'autre qu'une DLL managée. Le code que j'utilise est assez simple ... tiré des forums flexera où quelqu'un d'autre a posté une solution au problème .Net Framework 3.5 SP1 sur Server 2008 R2.

using System; 
using System.Diagnostics; 
using System.IO; 
using System.Text; 
using Common_Functions; 


namespace ActivateDotNetFramework 
{ 
    /** 
* @brief helper library to activate .Net Framework on certain operating systems 
* 
* @args None 
* 
* 
* @author Daniel Lee 
* @date Jan 17,2012 
* @version 1.0 
* @bug 6540 Role Management tool required for 2008R2 to install .NET 3.5 SP1 
**/ 
    class ActivateDotNetFramework 
    { 
     static void Main(string[] args) 
     { 

      string logFile = "ActivateDotNetFeatures.log"; 
      WriteToLog logWriter = null; 
      Process p = null;    
      ProcessStartInfo startInfo = null; 

      try 
      { 
       logWriter = new WriteToLog(logFile, ""); 
       logWriter.UpdateLog("AMAZINGCHARTS! ActivateDotNetFramework Custom Action"); 

       //open powershell process to activate the .net framework feature. See: 
       //http://community.flexerasoftware.com/archive/index.php?t-182914.html     
       startInfo = new ProcessStartInfo(); 
       startInfo.FileName = "powershell.exe"; 
       startInfo.Arguments = "Import-Module ServerManager ; Add-WindowsFeature as-net-framework"; 
       startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
       startInfo.UseShellExecute = true; 

       string sLogMsg = ""; 
       p = new Process(); 
       p.StartInfo = startInfo; 

       sLogMsg = "ProcessStartInfo Data ... "; 
       logWriter.UpdateLog(sLogMsg); 
       sLogMsg = "FileName: " + p.StartInfo.FileName + "\n Arguments:" + p.StartInfo.Arguments; 
       logWriter.UpdateLog(sLogMsg); 

       p.Start(); 
       p.WaitForExit(); 
       sLogMsg = "ActivateDotNetFramework Custom Action Return Code: " + p.ExitCode.ToString(); 
       logWriter.UpdateLog(sLogMsg); 
      } 
      catch (Exception) 
      { 
       throw; 
      } 
      finally 
      { 

      } 
     } 
    } 
} 

Des idées sur comment je devrais procéder avec cela dans VS2010? Ou est le problème dans ma configuration CA de package Wise Installation Studio? Pour autant que je peux voir VS2010 ne construit que le fichier ActivateDotNetFramework.dll géré et rien d'autre. J'ai ajouté ce fichier à mes ressources dans le paquetage sage et j'ai listé le nom de la fonction comme ActivateDotNetFramework.

J'ai été autour et autour de là pendant plus d'une journée maintenant. Toute aide est appréciée. Merci.

Dan Lee AmazingCharts! Release Engineer

Répondre

1

Ce code doit être compilé en tant qu'EXE et exécuté en tant qu'action personnalisée EXE. Mais ma plus grande question est de savoir pourquoi déranger du tout? Tout ce que vous devez faire dans Windows pour installer une fonctionnalité est d'appeler:

dism/ligne/Enable-Feature FeatureName

Pour une liste des noms de fonctions type:

dism/online/Get-Features

Questions connexes