From 9f62d71a84d2050c33d6f86df77b74241e88cc7a Mon Sep 17 00:00:00 2001 From: James Tabor Date: Mon, 30 Aug 2004 04:49:03 +0000 Subject: [PATCH] First implementation of advpack.dll. svn path=/trunk/; revision=10737 --- reactos/lib/advpack/.cvsignore | 8 + reactos/lib/advpack/Makefile | 43 +++ reactos/lib/advpack/advpack.c | 639 ++++++++++++++++++++++++++++++++ reactos/lib/advpack/advpack.def | 37 ++ reactos/lib/advpack/advpack.edf | 37 ++ reactos/lib/advpack/advpack.h | 254 +++++++++++++ reactos/lib/advpack/advpack.rc | 39 ++ reactos/lib/advpack/stubs.c | 35 ++ 8 files changed, 1092 insertions(+) create mode 100644 reactos/lib/advpack/.cvsignore create mode 100644 reactos/lib/advpack/Makefile create mode 100644 reactos/lib/advpack/advpack.c create mode 100644 reactos/lib/advpack/advpack.def create mode 100644 reactos/lib/advpack/advpack.edf create mode 100644 reactos/lib/advpack/advpack.h create mode 100644 reactos/lib/advpack/advpack.rc create mode 100644 reactos/lib/advpack/stubs.c diff --git a/reactos/lib/advpack/.cvsignore b/reactos/lib/advpack/.cvsignore new file mode 100644 index 00000000000..9103a525d39 --- /dev/null +++ b/reactos/lib/advpack/.cvsignore @@ -0,0 +1,8 @@ +*.coff +*.dll +*.d +*.a +*.o +*.sym +*.map +*.tmp diff --git a/reactos/lib/advpack/Makefile b/reactos/lib/advpack/Makefile new file mode 100644 index 00000000000..e53ac925584 --- /dev/null +++ b/reactos/lib/advpack/Makefile @@ -0,0 +1,43 @@ +# $Id: Makefile,v 1.1 2004/08/30 04:49:03 jimtabor Exp $ + +PATH_TO_TOP = ../.. + +TARGET_TYPE = dynlink + +TARGET_NAME = advpack + +TARGET_INSTALLDIR = system32 + +TARGET_BASE = $(TARGET_BASE_LIB_ACLEDIT) + +TARGET_CFLAGS = \ + -D_WIN32_IE=0x0600 \ + -D_WIN32_WINNT=0x0501 \ + -DUNICODE \ + -D_UNICODE \ + -D__REACTOS__ \ + -D__USE_W32API \ + -Wall \ + -Werror \ + -fno-builtin + +TARGET_LFLAGS = -nostartfiles -nostdlib + +TARGET_SDKLIBS = ntdll.a kernel32.a user32.a gdi32.a advapi32.a ole32.a version.a + +TARGET_GCCLIBS = gcc + +TARGET_PCH = + +TARGET_CLEAN = + +TARGET_OBJECTS = advpack.o stubs.o + +DEP_OBJECTS = $(TARGET_OBJECTS) + +include $(PATH_TO_TOP)/rules.mak + +include $(TOOLS_PATH)/helper.mk + +include $(TOOLS_PATH)/depend.mk + diff --git a/reactos/lib/advpack/advpack.c b/reactos/lib/advpack/advpack.c new file mode 100644 index 00000000000..1c376dcb3b7 --- /dev/null +++ b/reactos/lib/advpack/advpack.c @@ -0,0 +1,639 @@ +/* + * ReactOS Advpack User Library + * Copyright (C) 2004 ReactOS Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * See reference ie6_lib/include/advpub.h from msdn. + * Query "internet explorer headers libraries". + * + * Used wine/debug.h, if someone wanted to, they could port advpack over + * to the Wine project. + */ + + +#include +#include "advpack.h" +#include "wine/debug.h" + +/* + * @unimplemented + */ +BOOL WINAPI +DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + return TRUE; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +AddDelBackupEntry( LPCSTR FileList, + LPCSTR BackupDir, + LPCSTR BaseName, + DWORD Flags ) +{ + FIXME("AddDelBackupEntry not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +AdvInstallFile( HWND hwnd, + LPCSTR SourceDir, + LPCSTR SourceFile, + LPCSTR DestDir, + LPCSTR DestFile, + DWORD Flags, + DWORD Reserved) +{ + FIXME("AdvInstallFile not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +CloseINFEngine( HINF hinf ) +{ + FIXME("CloseINFEngine not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +DelNode( LPCSTR FileOrDirName, + DWORD Flags ) +{ + FIXME("DelNode not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +DelNodeRunDLL32( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ) +{ + FIXME("DelNodeRunDLL32 not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +ExecuteCab( HWND hwnd, + PCABINFO Cab, + LPVOID Reserved ) +{ + FIXME("ExecuteCab not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +ExtractFiles( LPCSTR CabName, + LPCSTR ExpandDir, + DWORD Flags, + LPCSTR FileList, + LPVOID LReserved, + DWORD Reserved ) +{ + FIXME("ExtractFiles not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +FileSaveMarkNotExist( LPSTR FileList, + LPSTR PathDir, + LPSTR BackupBaseName ) +{ + FIXME("FileSaveMarkNotExist not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +FileSaveRestore( HWND hwnd, + LPSTR FileList, + LPSTR PathDir, + LPSTR BackupBaseName, + DWORD Flags ) +{ + FIXME("FileSaveRestore not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +FileSaveRestoreOnINF( HWND hwnd, + PCSTR Title, + PCSTR InfFilename, + PCSTR Section, + HKEY BackupKey, + HKEY NBackupKey, + DWORD Flags ) +{ + FIXME("FileSaveRestoreOnINF not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @implemented + */ +HRESULT WINAPI +GetVersionFromFile( LPSTR Filename, + LPDWORD MajorVer, + LPDWORD MinorVer, + BOOL Version ) +{ + return (GetVersionFromFileEx(Filename, MajorVer, MinorVer, Version)); +} + +/* + * @implemented + */ +HRESULT WINAPI +GetVersionFromFileEx( LPSTR Filename, + LPDWORD MajorVer, + LPDWORD MinorVer, + BOOL Version ) +{ + DWORD Size, Reserved, Param; + UINT Length; + LPVOID Buffer; + + if (Version) + { + Size = GetFileVersionInfoSizeA(Filename, &Reserved); + + Buffer = LocalAlloc ( GMEM_ZEROINIT, Size ); + + GetFileVersionInfoA( Filename, 0, Size, Buffer); + + VerQueryValueA( Buffer, + "\\StringFileInfo\\040904b0\\FileVersion", + (LPVOID) &Param, + &Length ); + + MajorVer = (LPDWORD) (DWORD) HIWORD(Param); + MinorVer = (LPDWORD) (DWORD) LOWORD(Param); + + LocalFree( Buffer ); + } + else + { + /* Language ID */ + MajorVer = (LPDWORD) LANG_ENGLISH; + /* I guess EnumResourceLanguages is used with a call back. + * Return PRIMARYLANGID(wIDLanguage) from the call back. + */ + + /* Codepage ID */ + MinorVer = (LPDWORD) GetACP(); + /* Here again, another guess. */ + } + + return S_OK; +} + + +/* + * @implemented + */ +BOOL WINAPI +IsNTAdmin( DWORD Reserved, + PDWORD PReserved ) +{ + HANDLE Process, Token; + INT i; + BOOL Good = FALSE; + DWORD Buffer[4096]; + DWORD Size; + PTOKEN_GROUPS TokenGrp = (PTOKEN_GROUPS) Buffer; + SID_IDENTIFIER_AUTHORITY AuthSid = {SECURITY_NT_AUTHORITY}; + PSID psid = NULL; + + Process = GetCurrentProcess(); + + if (OpenProcessToken(Process, TOKEN_QUERY, &Token) == FALSE) + { + CloseHandle(Process); + return FALSE; + } + + if ( GetTokenInformation( Token, TokenGroups, Buffer, 4096, &Size) == FALSE) + { + CloseHandle(Process); + CloseHandle(Token); + return FALSE; + } + + CloseHandle(Process); + CloseHandle(Token); + + if ( AllocateAndInitializeSid( &AuthSid, + 2, + SECURITY_BUILTIN_DOMAIN_RID, + DOMAIN_ALIAS_RID_ADMINS, + 0, 0, 0, 0, 0, 0, + &psid) == FALSE) + { + return FALSE; + } + + for ( i = 0; i < TokenGrp->GroupCount; i++ ) + { + if ( EqualSid( psid , TokenGrp->Groups[i].Sid) != FALSE ) + { + Good = TRUE; + break; + } + } + + FreeSid( psid); + + return(Good); +} + + +/* + * @unimplemented + */ +INT WINAPI +LaunchINFSection( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ) +{ + FIXME("LaunchINFSection not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +LaunchINFSectionEx( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ) +{ + FIXME("LaunchINFSectionEx not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +BOOL WINAPI +NeedReboot( DWORD RebootCheck ) +{ + FIXME("NeedReboot not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return FALSE; +} + + + +/* + * @unimplemented + */ +DWORD WINAPI +NeedRebootInit( VOID ) +{ + FIXME("NeedRebootInit not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return 0; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +OpenINFEngine( PCSTR InfFilename, + PCSTR InstallSection, + DWORD Flags, + HINF hinf, + PVOID Reserved ) +{ + FIXME("OpenINFEngine not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RebootCheckOnInstall( HWND hwnd, + PCSTR InfFilename, + PCSTR InfSection, + DWORD Reserved ) +{ + FIXME("RebootCheckOnInstall not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RegInstall( HMODULE hm, + LPCSTR InfSectionExec, + LPCSTRTABLE TabStringSub ) +{ + FIXME("RegInstall not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * I found this on the net, + * O4 - HKLM\..\RunOnce: [mcagntps.dll] rundll32.exe advpack.dll, + * RegisterOCX c:\PROGRA~1\mcafee.com\agent\mcagntps.dll + * + * Not sure if this implementation is correct. I guess it's ActiveX stuff. + */ +/* + * @implemented + */ +HRESULT WINAPI +RegisterOCX(LPCTSTR Filename) +{ + FARPROC DllEntryPoint; + LPCTSTR DllName = Filename; + HINSTANCE hlib = LoadLibrary(DllName); + + FIXME("RegisterOCX not implemented\n"); + + if (hlib < (HINSTANCE)HINSTANCE_ERROR) + return E_FAIL; + DllEntryPoint = GetProcAddress( hlib, "DllRegisterServer"); + if (DllEntryPoint != NULL) + { + if (FAILED((*DllEntryPoint)())) + { + FreeLibrary(hlib); + return E_FAIL; + } + return S_OK; + } + else + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RegRestoreAll( HWND hwnd, + PCSTR TitleString, + HKEY BackupKey ) +{ + FIXME("RegRestoreAll not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RegSaveRestore( HWND hwnd, + PCSTR TitleString, + HKEY BackupKey, + PCSTR RootKey, + PCSTR SubKey, + PCSTR ValueName, + DWORD Flags ) +{ + FIXME("RegSaveRestore not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RegSaveRestoreOnINF( HWND hwnd, + PCSTR Title, + PCSTR InfFilename, + PCSTR Section, + HKEY BackupKey, + HKEY NBackupKey, + DWORD Flags ) +{ + FIXME("RegSaveRestoreOnINF not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +RunSetupCommand( HWND hwnd, + LPCSTR ExeFilename, + LPCSTR InfSection, + LPCSTR PathExtractedFile, + LPCSTR DialogTitle, + PHANDLE HExeWait, + DWORD Flags, + LPVOID Reserved) +{ + FIXME("RunSetupCommand not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +SetPerUserSecValues( PPERUSERSECTION PerUser ) +{ + FIXME("SetPerUserSecValues not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +TranslateInfString( PCSTR InfFilename, + PCSTR InstallSection, + PCSTR TranslateSection, + PCSTR TranslateKey, + PSTR BufferToKey, + DWORD BufferSize, + PVOID Reserved ) +{ + FIXME("TranslateInfString not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* + * @unimplemented + */ +HRESULT WINAPI +TranslateInfStringEx( HINF hinf, + PCSTR InfFilename, + PCSTR InstallSection, + PCSTR TranslateSection, + PCSTR TranslateKey, + PSTR BufferToKey, + DWORD BufferSize, + PVOID Reserved ) +{ + FIXME("TranslateInfStringEx not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +UserInstStubWrapper( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ) +{ + FIXME("UserInstStubWrapper not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + +/* + * @unimplemented + */ +HRESULT WINAPI +UserUnInstStubWrapper( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ) +{ + FIXME("UserUnInstStubWrapper not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* EOF */ diff --git a/reactos/lib/advpack/advpack.def b/reactos/lib/advpack/advpack.def new file mode 100644 index 00000000000..1d1fe7badda --- /dev/null +++ b/reactos/lib/advpack/advpack.def @@ -0,0 +1,37 @@ +LIBRARY advpack.dll + +EXPORTS +AddDelBackupEntry@16 +AdvInstallFile@28 +CloseINFEngine@4 +DelNode@8 +DelNodeRunDLL32@16 +DllMain@12 +DoInfInstall@4 +ExecuteCab@12 +ExtractFiles@24 +FileSaveMarkNotExist@12 +FileSaveRestore@20 +FileSaveRestoreOnINF@28 +GetVersionFromFile@16 +GetVersionFromFileEx@16 +IsNTAdmin@8 +LaunchINFSection@16 +LaunchINFSectionEx@16 +NeedReboot@4 +NeedRebootInit@0 +OpenINFEngine@20 +RebootCheckOnInstall@16 +RegInstall@12 +RegRestoreAll@12 +RegSaveRestore@28 +RegSaveRestoreOnINF@28 +RegisterOCX@4 +RunSetupCommand@32 +SetPerUserSecValues@4 +TranslateInfString@28 +TranslateInfStringEx@32 +UserInstStubWrapper@16 +UserUnInstStubWrapper@16 + +; EOF diff --git a/reactos/lib/advpack/advpack.edf b/reactos/lib/advpack/advpack.edf new file mode 100644 index 00000000000..052c116875f --- /dev/null +++ b/reactos/lib/advpack/advpack.edf @@ -0,0 +1,37 @@ +LIBRARY advpack.dll + +EXPORTS +AddDelBackupEntry=AddDelBackupEntry@16 +AdvInstallFile=AdvInstallFile@28 +CloseINFEngine=CloseINFEngine@4 +DelNode=DelNode@8 +DelNodeRunDLL32=DelNodeRunDLL32@16 +DllMain=DllMain@12 +DoInfInstall=DoInfInstall@4 +ExecuteCab=ExecuteCab@12 +ExtractFiles=ExtractFiles@24 +FileSaveMarkNotExist=FileSaveMarkNotExist@12 +FileSaveRestore=FileSaveRestore@20 +FileSaveRestoreOnINF=FileSaveRestoreOnINF@28 +GetVersionFromFile=GetVersionFromFile@16 +GetVersionFromFileEx=GetVersionFromFileEx@16 +IsNTAdmin=IsNTAdmin@8 +LaunchINFSection=LaunchINFSection@16 +LaunchINFSectionEx=LaunchINFSectionEx@16 +NeedReboot=NeedReboot@4 +NeedRebootInit=NeedRebootInit@0 +OpenINFEngine=OpenINFEngine@20 +RebootCheckOnInstall=RebootCheckOnInstall@16 +RegInstall=RegInstall@12 +RegRestoreAll=RegRestoreAll@12 +RegSaveRestore=RegSaveRestore@28 +RegSaveRestoreOnINF=RegSaveRestoreOnINF@28 +RegisterOCX=RegisterOCX@4 +RunSetupCommand=RunSetupCommand@32 +SetPerUserSecValues=SetPerUserSecValues@4 +TranslateInfString=TranslateInfString@28 +TranslateInfStringEx=TranslateInfStringEx@32 +UserInstStubWrapper=UserInstStubWrapper@16 +UserUnInstStubWrapper=UserUnInstStubWrapper@16 + +; EOF diff --git a/reactos/lib/advpack/advpack.h b/reactos/lib/advpack/advpack.h new file mode 100644 index 00000000000..547e1c3e171 --- /dev/null +++ b/reactos/lib/advpack/advpack.h @@ -0,0 +1,254 @@ +/* + ADVPACK.H + */ + +#ifndef _ADVPACK_H +#define _ADVPACK_H +#if __GNUC__ >=3 +#pragma GCC system_header +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct _StrEntry { + LPSTR Name; + LPSTR Value; +} STRENTRY, *LPSTRENTRY; + +typedef const STRENTRY CSTRENTRY; +typedef CSTRENTRY *LPCSTRENTRY; + +typedef struct _StrTable { + DWORD Entries; + LPSTRENTRY Array; +} STRTABLE, *LPSTRTABLE; + +typedef const STRTABLE CSTRTABLE; +typedef CSTRTABLE *LPCSTRTABLE; + +typedef struct _CabInfo { + PSTR Cab; + PSTR Inf; + PSTR Section; + char Path[MAX_PATH]; + DWORD Flags; +} CABINFO, *PCABINFO; + +typedef PVOID HINF; + +typedef struct _PERUSERSECTION { + char GUID[59]; + char DisplayName[128]; + char Locale[10]; + char Stub[MAX_PATH*4]; + char Version[32]; + char CompId[128]; + DWORD IsInstalled; + BOOL RollBack; +} PERUSERSECTION, *PPERUSERSECTION; + + +HRESULT WINAPI +AddDelBackupEntry( LPCSTR FileList, + LPCSTR BackupDir, + LPCSTR BaseName, + DWORD Flags ); + +HRESULT WINAPI +AdvInstallFile( HWND hwnd, + LPCSTR SourceDir, + LPCSTR SourceFile, + LPCSTR DestDir, + LPCSTR DestFile, + DWORD Flags, + DWORD Reserved); + +HRESULT WINAPI +CloseINFEngine( HINF hinf ); + +HRESULT WINAPI +DelNode( LPCSTR FileOrDirName, + DWORD Flags ); + +HRESULT WINAPI +DelNodeRunDLL32( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ); + + +HRESULT WINAPI +ExecuteCab( HWND hwnd, + PCABINFO Cab, + LPVOID Reserved ); + +HRESULT WINAPI +ExtractFiles( LPCSTR CabName, + LPCSTR ExpandDir, + DWORD Flags, + LPCSTR FileList, + LPVOID LReserved, + DWORD Reserved ); + +HRESULT WINAPI +FileSaveMarkNotExist( LPSTR FileList, + LPSTR PathDir, + LPSTR BackupBaseName ); + +HRESULT WINAPI +FileSaveRestore( HWND hwnd, + LPSTR FileList, + LPSTR PathDir, + LPSTR BackupBaseName, + DWORD Flags ); + + +HRESULT WINAPI +FileSaveRestoreOnINF( HWND hwnd, + PCSTR Title, + PCSTR InfFilename, + PCSTR Section, + HKEY BackupKey, + HKEY NBackupKey, + DWORD Flags ); + + +HRESULT WINAPI +GetVersionFromFile( LPSTR Filename, + LPDWORD MajorVer, + LPDWORD MinorVer, + BOOL Version ); + +HRESULT WINAPI +GetVersionFromFileEx( LPSTR Filename, + LPDWORD MajorVer, + LPDWORD MinorVer, + BOOL Version ); + +BOOL WINAPI +IsNTAdmin( DWORD Reserved, + PDWORD PReserved ); + +INT WINAPI +LaunchINFSection( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ); + +HRESULT WINAPI +LaunchINFSectionEx( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ); + +BOOL WINAPI +NeedReboot( DWORD RebootCheck ); + +DWORD WINAPI +NeedRebootInit( VOID ); + +HRESULT WINAPI +OpenINFEngine( PCSTR InfFilename, + PCSTR InstallSection, + DWORD Flags, + HINF hinf, + PVOID Reserved ); + +HRESULT WINAPI +RebootCheckOnInstall( HWND hwnd, + PCSTR InfFilename, + PCSTR InfSection, + DWORD Reserved ); + +HRESULT WINAPI +RegInstall( HMODULE hm, + LPCSTR InfSectionExec, + LPCSTRTABLE TabStringSub ); + +HRESULT WINAPI +RegRestoreAll( HWND hwnd, + PCSTR TitleString, + HKEY BackupKey ); + +HRESULT WINAPI +RegSaveRestore( HWND hwnd, + PCSTR TitleString, + HKEY BackupKey, + PCSTR RootKey, + PCSTR SubKey, + PCSTR ValueName, + DWORD Flags ); + +HRESULT WINAPI +RegSaveRestoreOnINF( HWND hwnd, + PCSTR Title, + PCSTR InfFilename, + PCSTR Section, + HKEY BackupKey, + HKEY NBackupKey, + DWORD Flags ); + + +HRESULT WINAPI +RunSetupCommand( HWND hwnd, + LPCSTR ExeFilename, + LPCSTR InfSection, + LPCSTR PathExtractedFile, + LPCSTR DialogTitle, + PHANDLE HExeWait, + DWORD Flags, + LPVOID Reserved); + + +HRESULT WINAPI +TranslateInfString( PCSTR InfFilename, + PCSTR InstallSection, + PCSTR TranslateSection, + PCSTR TranslateKey, + PSTR BufferToKey, + DWORD BufferSize, + PVOID Reserved ); + +HRESULT WINAPI +TranslateInfStringEx( HINF hinf, + PCSTR InfFilename, + PCSTR InstallSection, + PCSTR TranslateSection, + PCSTR TranslateKey, + PSTR BufferToKey, + DWORD BufferSize, + PVOID Reserved ); + +HRESULT WINAPI +SetPerUserSecValues( PPERUSERSECTION PerUser ); + +HRESULT WINAPI +UserInstStubWrapper( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ); + +HRESULT WINAPI +UserUnInstStubWrapper( HWND hwnd, + HINSTANCE Inst, + PSTR Params, + INT Index ); + +/* + * + * + */ +HRESULT WINAPI +DoInfInstall( DWORD Unknown); + +HRESULT WINAPI +RegisterOCX( LPCTSTR Filename ); + + + +#ifdef __cplusplus +} +#endif +#endif diff --git a/reactos/lib/advpack/advpack.rc b/reactos/lib/advpack/advpack.rc new file mode 100644 index 00000000000..24335496cfa --- /dev/null +++ b/reactos/lib/advpack/advpack.rc @@ -0,0 +1,39 @@ +#include +#include + +LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT + +VS_VERSION_INFO VERSIONINFO + FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD + PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x2L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904b0" + BEGIN + VALUE "CompanyName", RES_STR_COMPANY_NAME + VALUE "FileDescription", "ReactOS Advpack User Library\0" + VALUE "FileVersion", RES_STR_FILE_VERSION + VALUE "InternalName", "advpack\0" + VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT + VALUE "OriginalFilename", "advpack.dll\0" + VALUE "ProductName", RES_STR_PRODUCT_NAME + VALUE "ProductVersion", RES_STR_PRODUCT_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x409, 1200 + END +END + + diff --git a/reactos/lib/advpack/stubs.c b/reactos/lib/advpack/stubs.c new file mode 100644 index 00000000000..8420d313ad2 --- /dev/null +++ b/reactos/lib/advpack/stubs.c @@ -0,0 +1,35 @@ +/* + * ReactOS Advpack Stub Library + * Copyright (C) 2004 ReactOS Team + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include "advpack.h" +#include "wine/debug.h" + +HRESULT WINAPI +DoInfInstall(DWORD Unknown) +{ + FIXME("DoInfInstall not implemented\n"); + + SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + return E_FAIL; +} + + +/* EOF */