Персонализираното действие върна действителен код на грешка 1154 при използване на Wise Installer Studio 7.0

Първо, това е много подобно на проблема, адресиран Персонализирано действие в 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 Class Library.

Предполагам, че трябва да направя нещо различно тук - че това трябва да бъде компилирано като нещо различно от управлявана 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 и нищо друго. Добавих този файл към моите ресурси в пакета wise и посочих името на функцията като ActivateDotNetFramework.

Вече повече от ден се занимавам с това. Всяка помощ се оценява. Благодаря.

Дан Лий Невероятни класации! Инженер по освобождаване


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


Отговори (1)


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

dism /online /Enable-Feature FeatureName

За списък с имена на функции въведете:

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

person Christopher Painter    schedule 19.01.2012