VBoxStubBld.cpp revision dee9e52b1688c0617890cbbd8a8488f9f315d1b7
/* $Id$ */
/** @file
* VBoxStubBld - VirtualBox's Windows installer stub builder.
*/
/*
* Copyright (C) 2009 Oracle Corporation
*
* Oracle Corporation confidential
* All rights reserved
*/
/*******************************************************************************
* Header Files *
*******************************************************************************/
#include <windows.h>
#include <shellapi.h>
#include <strsafe.h>
#include "VBoxStubBld.h"
{
*phFile = ::CreateFile(pszFilePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (INVALID_HANDLE_VALUE == *phFile)
{
}
else
{
if (!*pdwFileSize)
{
}
}
return hr;
}
const char* pszFilePath,
const char* szResourceType,
const char* szResourceId)
{
{
}
if (pvFile)
{
}
if (hMap)
{
::CloseHandle(hMap);
}
return hr;
}
const char* szResourceType,
const char* szResourceId,
const char* pszFilePath)
{
DWORD dwFileSize = 0;
do
{
{
break;
}
else
{
{
break;
}
}
} while (0);
if (INVALID_HANDLE_VALUE != hFile)
{
::CloseHandle(hFile);
}
return hr;
}
static char * MyPathFilename(const char *pszPath)
{
for (;; psz++)
{
switch (*psz)
{
/* handle separators. */
case ':':
break;
case '\\':
case '/':
break;
/* the end */
case '\0':
if (*pszName)
return (char *)(void *)pszName;
return NULL;
}
}
/* will never get here */
return NULL;
}
{
int rc = 0;
do
{
printf("Sun VirtualBox Stub Builder v%d.%d.%d.%d\n",
if (argc < 2)
printf("WARNING: No parameters given! Using default values!\n");
{
"vbox$tub", /* File magic. */
1, /* Version. */
0 /* No files yet. */
};
for (int i=1; i<argc; i++)
{
{
i++;
}
{
i++;
}
{
i++;
}
{
i++;
}
{
i++;
}
else
{
break;
}
{
break;
}
}
break;
{
printf("ERROR: No packages defined! Exiting.\n");
break;
}
{
break;
}
char szHeaderName[_MAX_PATH] = {0};
{
/* Construct resource name. */
/* Construct final name used when extracting. */
/* Integrate header into binary. */
hr = UpdateResource(hUpdate, RT_RCDATA, szHeaderName, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), pPackage, sizeof(VBOXSTUBPKG));
/* Integrate file into binary. */
{
printf("ERROR: Could not integrate binary %s (%s): 0x%08x\n",
rc = 1;
}
pPackage++;
}
break;
if (!::UpdateResource(hUpdate, RT_RCDATA, "MANIFEST", MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), &stbHeader, sizeof(VBOXSTUBPKGHEADER)))
{
break;
}
{
break;
}
printf("Integration done!\n");
} while (0);
{
rc = 1;
}
return rc;
}