VirtualBox

Ignore:
Timestamp:
Jul 20, 2017 4:24:08 PM (8 years ago)
Author:
vboxsync
Message:

Unattended: Split out the post installation script into a separate file. Dropped the IUnattended::loadSettings method, don't see much point. Simplified the script editor classes, moving the default filenames and templates to the installer constructor, allowing us to avoid having to 'new' the script editors. The editors are now direct members of UnattendedInstaller.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp

    r68055 r68071  
    12861286    int         fInstallTxs             = -1;
    12871287    const char *pszMachineName          = NULL;
    1288     Utf8Str     strAbsSettingsFile;
    1289     const char *pszSettingsFile         = NULL;
    12901288    bool        fSetImageIdx            = false;
    12911289    uint32_t    idxImage                = 0;
     
    12951293    Utf8Str     strAbsScriptTemplatePath;
    12961294    const char *pszScriptTemplatePath   = NULL;
     1295    Utf8Str     strAbsPostInstallScriptTemplatePath;
     1296    const char *pszPostInstallScriptTemplatePath = NULL;
    12971297    const char *pszSessionType          = "headless";
    12981298
     
    13191319        { "--image-index",              'm', RTGETOPT_REQ_UINT32 },
    13201320        { "--script-template",          'c', RTGETOPT_REQ_STRING },
     1321        { "--post-install-template",    'C', RTGETOPT_REQ_STRING },
    13211322        { "--post-install-command",     'P', RTGETOPT_REQ_STRING },
    1322         { "--settings-file",            's', RTGETOPT_REQ_STRING },
    13231323        { "--session-type",             'S', RTGETOPT_REQ_STRING },
    13241324    };
     
    13421342                break;
    13431343
    1344             case 's':   // --settings-file <key value file>
    1345                 vrc = RTPathAbsCxx(strAbsSettingsFile, ValueUnion.psz);
    1346                 if (RT_FAILURE(vrc))
    1347                     return errorSyntax(USAGE_UNATTENDEDINSTALL, "RTPathAbsCxx failed on '%s': %Rrc", ValueUnion.psz, vrc);
    1348                 pszSettingsFile = strAbsSettingsFile.c_str();
    1349                 break;
    1350 
    13511344            case 'i':   // --iso
    13521345                vrc = RTPathAbsCxx(strAbsIsoPath, ValueUnion.psz);
     
    14171410                break;
    14181411
     1412            case 'C':  // --post-install-script-template
     1413                vrc = RTPathAbsCxx(strAbsPostInstallScriptTemplatePath, ValueUnion.psz);
     1414                if (RT_FAILURE(vrc))
     1415                    return errorSyntax(USAGE_UNATTENDEDINSTALL, "RTPathAbsCxx failed on '%s': %Rrc", ValueUnion.psz, vrc);
     1416                pszPostInstallScriptTemplatePath = strAbsPostInstallScriptTemplatePath.c_str();
     1417                break;
     1418
    14191419            case 'P':   // --post-install-command.
    14201420                pszPostInstallCommand = ValueUnion.psz;
     
    14361436        return errorSyntax(USAGE_UNATTENDEDINSTALL, "Missing VM name/UUID");
    14371437
    1438     if (!pszSettingsFile && !pszIsoPath)
    1439         return errorSyntax(USAGE_UNATTENDEDINSTALL, "Missing required --iso (or --settings-file) option");
     1438    if (!pszIsoPath)
     1439        return errorSyntax(USAGE_UNATTENDEDINSTALL, "Missing required --iso option");
    14401440
    14411441    /*
     
    14861486            ComPtr<IUnattended> ptrUnattended;
    14871487            CHECK_ERROR_BREAK(machine, CreateUnattendedInstaller(ptrUnattended.asOutParam()));
    1488 
    1489             if (pszSettingsFile)
    1490                 CHECK_ERROR_BREAK(ptrUnattended, LoadSettings(Bstr(pszSettingsFile).raw()));
    14911488
    14921489            if (pszIsoPath)
     
    15121509            if (pszScriptTemplatePath)
    15131510                CHECK_ERROR_BREAK(ptrUnattended, COMSETTER(ScriptTemplatePath)(Bstr(pszScriptTemplatePath).raw()));
     1511            if (pszPostInstallScriptTemplatePath)
     1512                CHECK_ERROR_BREAK(ptrUnattended, COMSETTER(PostInstallScriptTemplatePath)(Bstr(pszPostInstallScriptTemplatePath).raw()));
    15141513            if (pszPostInstallCommand)
    15151514                CHECK_ERROR_BREAK(ptrUnattended, COMSETTER(PostInstallCommand)(Bstr(pszPostInstallCommand).raw()));
     
    15291528                    HRESULT hrc2 = ptrUnattended->COMGETTER(a_Attr)(&Value); \
    15301529                    if (SUCCEEDED(hrc2)) \
    1531                         RTPrintf("  %22s = " a_szFmt "\n", a_szText, Value); \
     1530                        RTPrintf("  %32s = " a_szFmt "\n", a_szText, Value); \
    15321531                    else \
    1533                         RTPrintf("  %22s = failed: %Rhrc\n", a_szText, hrc2); \
     1532                        RTPrintf("  %32s = failed: %Rhrc\n", a_szText, hrc2); \
    15341533                } while (0)
    15351534#define SHOW_STR_ATTR(a_Attr, a_szText) do { \
     
    15371536                    HRESULT hrc2 = ptrUnattended->COMGETTER(a_Attr)(bstrString.asOutParam()); \
    15381537                    if (SUCCEEDED(hrc2)) \
    1539                         RTPrintf("  %22s = %ls\n", a_szText, bstrString.raw()); \
     1538                        RTPrintf("  %32s = %ls\n", a_szText, bstrString.raw()); \
    15401539                    else \
    1541                         RTPrintf("  %22s = failed: %Rhrc\n", a_szText, hrc2); \
     1540                        RTPrintf("  %32s = failed: %Rhrc\n", a_szText, hrc2); \
    15421541                } while (0)
    15431542
     
    15541553            SHOW_ATTR(    ImageIndex,               "imageIndex",               ULONG, "%u");
    15551554            SHOW_STR_ATTR(ScriptTemplatePath,       "scriptTemplatePath");
     1555            SHOW_STR_ATTR(PostInstallScriptTemplatePath, "postInstallScriptTemplatePath");
    15561556            SHOW_STR_ATTR(PostInstallCommand,       "postInstallCommand");
    15571557
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette