Пользовательское действие вернуло фактический код ошибки 1154 при использовании Wise Installer Studio 7.0 - PullRequest
0 голосов
/ 19 января 2012

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

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

В моем случае я использую Wise Installation Studio 7.0 для выполнения настраиваемого действия C #, которое я написал для запуска компонента Server Manager для .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!Релиз Инженер

1 Ответ

1 голос
/ 20 января 2012

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

dism / online / Enable-Feature FeatureName

Для получения списка имен элементов введите:

dism / online / Get-Features

...