如何在Azure中静默/自动安装桌面体验?

时间:2011-03-03 04:54:36

标签: azure azure-worker-roles

我需要在Azure辅助角色中安装桌面体验。通过命令行安装DE可以通过以下方式完成:

c:\servermanagercmd -install Desktop-Experience

然后需要重新启动。

如何才能最好地在Azure辅助角色中完成此工作?


更新:

1)确保使用OS Family 2和SDK> = 1.3

2)使用提升的启动任务使用以下命令调用包含的批处理文件:

3) servermanagercmd -install Desktop-Experience -restart -resultPath results.xml

我试过了

a)将该命令行放在批处理/ .cmd文件中,并通过提升的启动任务运行它。结果:工作者角色保持中止并在无休止的循环中重新启动。

b)我试图在提升的运行时在OnStart()中创建一个新的Process(),如下所示:

ServiceDefinition.csdef中:

 Runtime executionContext="elevated"

WorkerRole.cs:

public override bool OnStart()
{
   if (!System.IO.File.Exists("Startup\\InstallationFinished.txt"))
   {

      Process startup = new Process(); 

      startup.StartInfo.FileName = "Startup\\InstallDesktopExperience.cmd";
      startup.StartInfo.CreateNoWindow = true;
      startup.EnableRaisingEvents = true;
      startup.Start();
      startup.WaitForExit();

      System.IO.File.WriteAllText("Startup\\InstallationFinished.txt", 
            "Installation is complete.");

      startup.StartInfo.FileName = "Startup\\Reboot.cmd";
      startup.Start();
    }

    base.OnStart(); 
}

InstallDesktopExperience.cmd:

servermanagercmd -install Desktop-Experience

Reboot.cmd:

shutdown /r

结果是Azure辅助角色中的事件查看器显示TrustedInstaller(0xc0000005)中的异常。在事件日志中显示此错误后,无法通过打开命令行窗口并键入命令手动安装DE。我收到错误:

错误:安装[桌面体验]失败。尝试安装桌面体验失败,错误代码为0x80080005。服务器执行失败(来自HRESULT的异常:0x80080005(CO_E_SERVER_EXEC_FAILURE))

(但如果我没有在OnStart中运行代码,它可以在命令行窗口中手动执行)

我迷路了。提前感谢任何和所有建议。

1 个答案:

答案 0 :(得分:1)

您应该参考Wage Wegner的这本指南。它涉及Expression Encoder,但桌面体验的先决条件完全相同:

http://www.wadewegner.com/2011/01/using-expression-encoder-4-in-a-windows-azure-worker-role/


来自相同的片段,但你应该花时间阅读他对其中一些概念的解释

REM : Install the Desktop Experience
ServerManagerCMD.exe -install Desktop-Experience -restart -resultPath results.xml
REM : Make a folder for the AppData
md "%~dp0appdata"
REM : Change the location of the Local AppData
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f
REM : Install Encoder
"%~dp0\webpicmd\WebPICmdLine.exe" /accepteula /Products: ExpressionEncoder4 /log:encoder.txt
REM : Change the location of the Local AppData back to default
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f
REM : Exit gracefully
exit /b 0