首先,这与通过 WiX 使用的 C# 中的自定义操作失败并出现错误 1154的问题非常相似
但是,在我的情况下,我无法辨别解决问题的具体步骤。希望有人能指出我正确的方向。
在我的情况下,我使用 Wise Installation Studio 7.0 执行我编写的 C# 自定义操作,以在 Server 2008 R2 及更高版本上启动 .Net Framework 3.5 SP1 的服务器管理器功能。
我在 Visual Studio 2010 中将自定义操作创建为标准的 .Net 2.0 类库。
我的猜测是我需要在这里做一些不同的事情 - 这需要编译为托管 DLL 之外的东西。我正在使用的代码相当直接......取自 flexera 论坛,其他人在其中发布了针对 Server 2008 R2 上的 .Net Framework 3.5 SP1 问题的解决方案。
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 中进行此操作的任何想法?或者是我的 Wise Installation Studio 包 CA 配置中的问题?据我所见,VS2010 只构建托管的 ActivateDotNetFramework.dll 文件,没有别的。我将此文件添加到我在 wise 包中的资源中,并将函数名称列为 ActivateDotNetFramework。
我已经在这个问题上转了一天多。任何帮助表示赞赏。谢谢。
丹李惊人的图表!发布工程师