You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.6 KiB
89 lines
2.6 KiB
#include "precomp.h"
|
|
#include "cabclass.h"
|
|
|
|
extern TCHAR g_szBuildTemp[];
|
|
extern TCHAR g_szWizRoot[];
|
|
extern TCHAR g_szCustInf[];
|
|
extern TCHAR g_szCustIns[];
|
|
extern TCHAR g_szUnsignedFiles[];
|
|
extern BOOL g_fDownload;
|
|
|
|
|
|
const TCHAR *CCabMappings::c_szCabNameArray[] = {
|
|
{ TEXT("BRANDING") },
|
|
{ TEXT("CHNLS") },
|
|
{ TEXT("DESKTOP") },
|
|
{ TEXT("") } // keep the last entry the empty string
|
|
};
|
|
|
|
const FEATUREMAPPING CCabMappings::c_fmFeatureList[] = {
|
|
{ 0, TEXT("") },
|
|
{ 0, TEXT("FAVS") },
|
|
{ 0, TEXT("CONNECT") },
|
|
{ 1, TEXT("BASE") },
|
|
{ 2, TEXT("DESKCOMP") },
|
|
{ 2, TEXT("TOOLBAR") },
|
|
{ 2, TEXT("MYCPTR") },
|
|
{ 2, TEXT("CTLPANEL") },
|
|
{ 0, TEXT("LDAP") },
|
|
{ 0, TEXT("OE") },
|
|
{ 2, TEXT("WALLPAPR") },
|
|
{ 0, TEXT("BTOOLBAR") }
|
|
};
|
|
|
|
void CCabMappings::GetFeatureDir(FEATURE feature, LPTSTR pszDir, BOOL fFullyQualified)
|
|
{
|
|
if (fFullyQualified)
|
|
{
|
|
PathCombine(pszDir, g_szBuildTemp, c_szCabNameArray[c_fmFeatureList[feature].index]);
|
|
CreateDirectory(pszDir, NULL);
|
|
PathAppend(pszDir, c_fmFeatureList[feature].szDirName);
|
|
CreateDirectory(pszDir, NULL);
|
|
}
|
|
else
|
|
PathCombine(pszDir, c_szCabNameArray[c_fmFeatureList[feature].index],
|
|
c_fmFeatureList[feature].szDirName);
|
|
|
|
CharLower(pszDir);
|
|
}
|
|
|
|
HRESULT CCabMappings::MakeCab(int index, LPCTSTR pcszDestDir, LPCTSTR pcszCabName)
|
|
{
|
|
TCHAR szCmd[MAX_PATH * 3];
|
|
TCHAR szExePath[MAX_PATH];
|
|
TCHAR szCabPath[MAX_PATH];
|
|
TCHAR szSrcPath[MAX_PATH];
|
|
|
|
PathCombine(szExePath, g_szWizRoot, TEXT("TOOLS"));
|
|
PathAppend(szExePath, TEXT("CABARC.EXE"));
|
|
|
|
if (pcszCabName == NULL)
|
|
{
|
|
PathCombine(szCabPath, pcszDestDir, c_szCabNameArray[index]);
|
|
StrCat(szCabPath, TEXT(".CAB"));
|
|
}
|
|
else
|
|
PathCombine(szCabPath, pcszDestDir, pcszCabName);
|
|
|
|
PathCombine(szSrcPath, g_szBuildTemp, c_szCabNameArray[index]);
|
|
PathAppend(szSrcPath, TEXT("*.*"));
|
|
wnsprintf(szCmd, countof(szCmd), TEXT("%s -r N %s %s"), szExePath, szCabPath, szSrcPath);
|
|
|
|
if (!RunAndWait(szCmd, g_szBuildTemp, SW_HIDE))
|
|
return E_FAIL;
|
|
|
|
if (g_fDownload)
|
|
SignFile(PathFindFileName(szCabPath), g_szBuildTemp, g_szCustIns, g_szUnsignedFiles, g_szCustInf);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
HRESULT CCabMappings::MakeCabs(LPCTSTR pcszDestDir)
|
|
{
|
|
for (int i=0; *c_szCabNameArray[i]; i++)
|
|
{
|
|
if (MakeCab(i, pcszDestDir, NULL) != S_OK)
|
|
return E_FAIL;
|
|
}
|
|
return S_OK;
|
|
}
|