Пользовательское действие вернуло фактический код ошибки 1154 при использовании Wise Installer Studio 7.0

Прежде всего, это очень похоже на решаемую проблему Пользовательское действие в C #, используемое через WiX, завершается ошибкой 1154.

Однако я не смог выделить конкретные шаги для решения проблемы в моей ситуации. Надеюсь, кто-нибудь сможет указать мне правильное направление.

В моем случае я использую Wise Installation Studio 7.0 для выполнения настраиваемого действия C #, которое я написал для запуска функции диспетчера серверов для .Net Framework 3.5 SP1 на Server 2008 R2 и новее.

Я создал настраиваемое действие в Visual Studio 2010 как стандартную библиотеку классов .Net 2.0.

Я предполагаю, что здесь мне нужно сделать что-то другое - что это должно быть скомпилировано как нечто, отличное от управляемой DLL. Код, который я использую, довольно прост ... взят с форумов flexera, где кто-то опубликовал решение проблемы .Net Framework 3.5 SP1 на 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
            {

            }
        }
    }
}

Любые идеи о том, как мне поступить с этим в VS2010? Или проблема в моей конфигурации CA пакета Wise Installation Studio? Насколько я могу судить, VS2010 создает только управляемый файл ActivateDotNetFramework.dll и ничего больше. Я добавил этот файл к своим ресурсам в мудром пакете и указал имя функции как ActivateDotNetFramework.

Я был вокруг и вокруг этого уже более дня. Любая помощь приветствуется. Спасибо.

Дэн Ли AmazingCharts! Инженер по выпуску


person Daniel Lee    schedule 19.01.2012    source источник


Ответы (1)


Этот код должен быть скомпилирован как EXE и запущен как настраиваемое действие EXE. Но мой более важный вопрос: зачем вообще беспокоиться? Все, что вам нужно сделать в Windows для установки функции, - это позвонить:

DISM / Online / Enable-Feature Имя функции

Чтобы получить список названий функций, введите:

DISM / онлайн / Get-Features

person Christopher Painter    schedule 19.01.2012