blob: f12d1d4cd341e288e6a30c18a52b015e56dedd0b [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#include "setup_main.hxx"
//--------------------------------------------------------------------------
#ifdef SetupAppX
#undef SetupAppX
#endif
#ifdef Create_SetupAppX
#undef Create_SetupAppX
#endif
#ifdef LanguageDataX
#undef LanguageDataX
#endif
#ifdef UNICODE
#define SetupAppX SetupAppW
#define Create_SetupAppX Create_SetupAppW
#define LanguageDataX LanguageDataW
#else
#define SetupAppX SetupAppA
#define Create_SetupAppX Create_SetupAppA
#define LanguageDataX LanguageDataA
#endif
//--------------------------------------------------------------------------
struct LanguageDataX
{
long m_nLanguageID;
LPTSTR m_pTransform;
LanguageDataX( LPTSTR pData );
~LanguageDataX();
};
//--------------------------------------------------------------------------
class SetupAppX : public SetupApp
{
HINSTANCE m_hInst;
HANDLE m_hMapFile;
LPTSTR m_pAppTitle;
LPTSTR m_pCmdLine;
LPTSTR m_pDatabase;
LPTSTR m_pReqVersion;
LPTSTR m_pProductName;
LPTSTR m_pAdvertise;
LPTSTR m_pTmpName;
LPTSTR m_pErrorText;
LPTSTR m_pModuleFile;
LPTSTR m_pPatchFiles;
LPCTSTR m_pUpgradeKey;
LPCTSTR m_pProductVersion;
int *m_pMSIErrorCode;
boolean m_bQuiet : 1;
boolean m_bIgnoreAlreadyRunning : 1;
boolean m_bRegNoMsoTypes :1;
boolean m_bRegAllMsoTypes :1;
boolean m_bIsMinorUpgrade :1;
boolean m_bSupportsPatch :1;
FILE *m_pLogFile;
long m_nLanguageID;
long m_nLanguageCount;
LanguageDataX** m_ppLanguageList;
private:
boolean GetPathToFile( TCHAR* pFileName, TCHAR **pPath );
LPCTSTR GetPathToMSI();
int GetNameValue( TCHAR* pLine, TCHAR **pName, TCHAR **pValue );
boolean GetProfileSection( LPCTSTR pFileName, LPCTSTR pSection,
DWORD& rSize, LPTSTR *pRetBuf );
LPTSTR CopyIniFile( LPCTSTR pIniFile );
void ConvertNewline( LPTSTR pText ) const;
boolean LaunchInstaller( LPCTSTR pParam );
HMODULE LoadMsiLibrary();
DWORD WaitForProcess( HANDLE hHandle );
boolean GetCmdLineParameters( LPTSTR *pCmdLine );
DWORD GetNextArgument( LPCTSTR pStr, LPTSTR *pArg,
LPTSTR *pNext, boolean bStripQuotes = false );
boolean IsAdmin();
boolean GetCommandLine();
boolean IsTerminalServerInstalled() const;
void AddFileToPatchList( TCHAR* pPath, TCHAR* pFile );
boolean IsPatchInstalled( TCHAR* pBaseDir, TCHAR* pFileName );
boolean InstallRuntimes( TCHAR* pProductCode, TCHAR* pFileName );
public:
SetupAppX();
~SetupAppX();
virtual boolean Initialize( HINSTANCE hInst );
virtual boolean AlreadyRunning() const;
virtual boolean ReadProfile();
virtual boolean GetPatches();
virtual boolean ChooseLanguage( long& rLanguage );
virtual boolean CheckVersion();
virtual boolean CheckForUpgrade();
virtual boolean InstallRuntimes();
virtual boolean Install( long nLanguage );
virtual UINT GetError() const;
virtual void DisplayError( UINT nErr ) const;
void Log( LPCTSTR pMessage, LPCTSTR pText = NULL ) const;
long GetLanguageCount() const { return m_nLanguageCount; }
long GetLanguageID( long nIndex ) const;
void GetLanguageName( long nLanguage, LPTSTR sName ) const;
LPCTSTR GetAppTitle() const { return m_pAppTitle; }
LPTSTR SetProdToAppTitle( LPCTSTR pProdName );
HINSTANCE GetHInst() const { return m_hInst; }
};
//--------------------------------------------------------------------------