Implement logging in msiexec.
Correct MsiEnableLog{A,W} prototype.
This commit is contained in:
parent
72984f105d
commit
d2df24b90f
|
@ -747,12 +747,12 @@ UINT WINAPI MsiDatabaseImportW(LPCWSTR szFolderPath, LPCWSTR szFilename)
|
||||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, BOOL fAppend)
|
UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, DWORD attributes)
|
||||||
{
|
{
|
||||||
LPWSTR szwLogFile = NULL;
|
LPWSTR szwLogFile = NULL;
|
||||||
UINT hr = ERROR_INSTALL_FAILURE;
|
UINT hr = ERROR_INSTALL_FAILURE;
|
||||||
|
|
||||||
FIXME("%08lx %s %d\n", dwLogMode, debugstr_a(szLogFile), fAppend);
|
FIXME("%08lx %s %08lx\n", dwLogMode, debugstr_a(szLogFile), attributes);
|
||||||
|
|
||||||
if( szLogFile )
|
if( szLogFile )
|
||||||
{
|
{
|
||||||
|
@ -765,7 +765,7 @@ UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, BOOL fAppend)
|
||||||
return ERROR_INVALID_PARAMETER;
|
return ERROR_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
|
|
||||||
hr = MsiEnableLogW( dwLogMode, szwLogFile, fAppend );
|
hr = MsiEnableLogW( dwLogMode, szwLogFile, attributes );
|
||||||
|
|
||||||
end:
|
end:
|
||||||
if( szwLogFile )
|
if( szwLogFile )
|
||||||
|
@ -774,12 +774,12 @@ end:
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, BOOL fAppend)
|
UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes)
|
||||||
{
|
{
|
||||||
HANDLE the_file = INVALID_HANDLE_VALUE;
|
HANDLE the_file = INVALID_HANDLE_VALUE;
|
||||||
TRACE("%08lx %s %d\n", dwLogMode, debugstr_w(szLogFile), fAppend);
|
TRACE("%08lx %s %08lx\n", dwLogMode, debugstr_w(szLogFile), attributes);
|
||||||
strcpyW(gszLogFile,szLogFile);
|
strcpyW(gszLogFile,szLogFile);
|
||||||
if (!fAppend)
|
if (!(attributes & INSTALLLOGATTRIBUTES_APPEND))
|
||||||
DeleteFileW(szLogFile);
|
DeleteFileW(szLogFile);
|
||||||
the_file = CreateFileW(szLogFile, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS,
|
the_file = CreateFileW(szLogFile, GENERIC_WRITE, 0, NULL, OPEN_ALWAYS,
|
||||||
FILE_ATTRIBUTE_NORMAL, NULL);
|
FILE_ATTRIBUTE_NORMAL, NULL);
|
||||||
|
|
|
@ -117,6 +117,12 @@ typedef enum tagINSTALLLOGMODE
|
||||||
INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24))
|
INSTALLLOGMODE_SHOWDIALOG = (1 << (INSTALLMESSAGE_SHOWDIALOG >> 24))
|
||||||
} INSTALLLOGMODE;
|
} INSTALLLOGMODE;
|
||||||
|
|
||||||
|
typedef enum tagINSTALLLOGATTRIBUTES
|
||||||
|
{
|
||||||
|
INSTALLLOGATTRIBUTES_APPEND = 0x00000001,
|
||||||
|
INSTALLLOGATTRIBUTES_FLUSHEACHLINE = 0x00000002
|
||||||
|
} INSTALLLOGATTRIBUTES;
|
||||||
|
|
||||||
typedef enum tagADVERTISEFLAGS
|
typedef enum tagADVERTISEFLAGS
|
||||||
{
|
{
|
||||||
ADVERTISEFLAGS_MACHINEASSIGN = 0,
|
ADVERTISEFLAGS_MACHINEASSIGN = 0,
|
||||||
|
@ -214,8 +220,8 @@ UINT WINAPI MsiGetProductInfoA(LPCSTR szProduct, LPCSTR szAttribute, LPSTR szBuf
|
||||||
UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, DWORD *pcchValueBuf);
|
UINT WINAPI MsiGetProductInfoW(LPCWSTR szProduct, LPCWSTR szAttribute, LPWSTR szBuffer, DWORD *pcchValueBuf);
|
||||||
#define MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
|
#define MsiGetProductInfo WINELIB_NAME_AW(MsiGetProductInfo)
|
||||||
|
|
||||||
UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, BOOL fAppend);
|
UINT WINAPI MsiEnableLogA(DWORD dwLogMode, LPCSTR szLogFile, DWORD attributes);
|
||||||
UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, BOOL fAppend);
|
UINT WINAPI MsiEnableLogW(DWORD dwLogMode, LPCWSTR szLogFile, DWORD attributes);
|
||||||
#define MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
|
#define MsiEnableLog WINELIB_NAME_AW(MsiEnableLog)
|
||||||
|
|
||||||
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA, DWORD, LPVOID);
|
INSTALLUI_HANDLERA WINAPI MsiSetExternalUIA(INSTALLUI_HANDLERA, DWORD, LPVOID);
|
||||||
|
|
|
@ -140,6 +140,10 @@ int main(int argc, char *argv[])
|
||||||
LPSTR Transforms = HeapAlloc(GetProcessHeap(), 0, 1);
|
LPSTR Transforms = HeapAlloc(GetProcessHeap(), 0, 1);
|
||||||
LANGID Language = 0;
|
LANGID Language = 0;
|
||||||
|
|
||||||
|
DWORD LogMode = 0;
|
||||||
|
LPSTR LogFileName = NULL;
|
||||||
|
DWORD LogAttributes = 0;
|
||||||
|
|
||||||
INSTALLUILEVEL InstallUILevel = 0, retInstallUILevel;
|
INSTALLUILEVEL InstallUILevel = 0, retInstallUILevel;
|
||||||
|
|
||||||
LPSTR DllName = NULL;
|
LPSTR DllName = NULL;
|
||||||
|
@ -366,13 +370,94 @@ int main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
else if(!strncasecmp(argv[i], "/l", 2))
|
else if(!strncasecmp(argv[i], "/l", 2))
|
||||||
{
|
{
|
||||||
|
int j;
|
||||||
|
int len = strlen(argv[i]);
|
||||||
|
for(j = 2; j < len; j++)
|
||||||
|
{
|
||||||
|
switch(argv[i][j])
|
||||||
|
{
|
||||||
|
case 'I':
|
||||||
|
case 'i':
|
||||||
|
LogMode |= INSTALLLOGMODE_INFO;
|
||||||
|
break;
|
||||||
|
case 'W':
|
||||||
|
case 'w':
|
||||||
|
LogMode |= INSTALLLOGMODE_WARNING;
|
||||||
|
break;
|
||||||
|
case 'E':
|
||||||
|
case 'e':
|
||||||
|
LogMode |= INSTALLLOGMODE_ERROR;
|
||||||
|
break;
|
||||||
|
case 'A':
|
||||||
|
case 'a':
|
||||||
|
LogMode |= INSTALLLOGMODE_ACTIONSTART;
|
||||||
|
break;
|
||||||
|
case 'R':
|
||||||
|
case 'r':
|
||||||
|
LogMode |= INSTALLLOGMODE_ACTIONDATA;
|
||||||
|
break;
|
||||||
|
case 'U':
|
||||||
|
case 'u':
|
||||||
|
LogMode |= INSTALLLOGMODE_USER;
|
||||||
|
break;
|
||||||
|
case 'C':
|
||||||
|
case 'c':
|
||||||
|
LogMode |= INSTALLLOGMODE_COMMONDATA;
|
||||||
|
break;
|
||||||
|
case 'M':
|
||||||
|
case 'm':
|
||||||
|
LogMode |= INSTALLLOGMODE_FATALEXIT;
|
||||||
|
break;
|
||||||
|
case 'O':
|
||||||
|
case 'o':
|
||||||
|
LogMode |= INSTALLLOGMODE_OUTOFDISKSPACE;
|
||||||
|
break;
|
||||||
|
case 'P':
|
||||||
|
case 'p':
|
||||||
|
LogMode |= INSTALLLOGMODE_PROPERTYDUMP;
|
||||||
|
break;
|
||||||
|
case 'V':
|
||||||
|
case 'v':
|
||||||
|
LogMode |= INSTALLLOGMODE_VERBOSE;
|
||||||
|
break;
|
||||||
|
case '*':
|
||||||
|
LogMode = INSTALLLOGMODE_FATALEXIT |
|
||||||
|
INSTALLLOGMODE_ERROR |
|
||||||
|
INSTALLLOGMODE_WARNING |
|
||||||
|
INSTALLLOGMODE_USER |
|
||||||
|
INSTALLLOGMODE_INFO |
|
||||||
|
INSTALLLOGMODE_RESOLVESOURCE |
|
||||||
|
INSTALLLOGMODE_OUTOFDISKSPACE |
|
||||||
|
INSTALLLOGMODE_ACTIONSTART |
|
||||||
|
INSTALLLOGMODE_ACTIONDATA |
|
||||||
|
INSTALLLOGMODE_COMMONDATA |
|
||||||
|
INSTALLLOGMODE_PROPERTYDUMP |
|
||||||
|
INSTALLLOGMODE_PROGRESS |
|
||||||
|
INSTALLLOGMODE_INITIALIZE |
|
||||||
|
INSTALLLOGMODE_TERMINATE |
|
||||||
|
INSTALLLOGMODE_SHOWDIALOG;
|
||||||
|
break;
|
||||||
|
case '+':
|
||||||
|
LogAttributes |= INSTALLLOGATTRIBUTES_APPEND;
|
||||||
|
break;
|
||||||
|
case '!':
|
||||||
|
LogAttributes |= INSTALLLOGATTRIBUTES_FLUSHEACHLINE;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
i++;
|
i++;
|
||||||
if(i >= argc)
|
if(i >= argc)
|
||||||
ShowUsage(1);
|
ShowUsage(1);
|
||||||
WINE_TRACE("argv[%d] = %s\n", i, argv[i]);
|
WINE_TRACE("argv[%d] = %s\n", i, argv[i]);
|
||||||
WINE_FIXME("Logging not yet implemented\n");
|
LogFileName = argv[i];
|
||||||
|
if(MsiEnableLogA(LogMode, LogFileName, LogAttributes) != ERROR_SUCCESS)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Logging in %s (0x%08lx, %lu) failed\n", LogFileName, LogMode, LogAttributes);
|
||||||
ExitProcess(1);
|
ExitProcess(1);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else if(!strcasecmp(argv[i], "/p"))
|
else if(!strcasecmp(argv[i], "/p"))
|
||||||
{
|
{
|
||||||
i++;
|
i++;
|
||||||
|
|
|
@ -20,19 +20,3 @@
|
||||||
|
|
||||||
typedef HRESULT (*DLLREGISTERSERVER)(void);
|
typedef HRESULT (*DLLREGISTERSERVER)(void);
|
||||||
typedef HRESULT (*DLLUNREGISTERSERVER)(void);
|
typedef HRESULT (*DLLUNREGISTERSERVER)(void);
|
||||||
|
|
||||||
/* Logging flags */
|
|
||||||
|
|
||||||
#define LOG_STATUS_MESSAGES 0x00000001
|
|
||||||
#define LOG_NONFATAL_WARNINGS 0x00000002
|
|
||||||
#define LOG_ALL_ERROR_MESSAGES 0x00000004
|
|
||||||
#define LOG_STARTUP_OF_ACTIONS 0x00000008
|
|
||||||
#define LOG_ACTION_SPECIFIC_RECORDS 0x00000010
|
|
||||||
#define LOG_USER_REQUESTS 0x00000020
|
|
||||||
#define LOG_INITIAL_USER_INTERFACE_PARAMETERS 0x00000040
|
|
||||||
#define LOG_OUT_OF_MEMORY 0x00000080
|
|
||||||
#define LOG_TERMINAL_PROPERTIES 0x00000100
|
|
||||||
#define LOG_VERBOSE_OUTPUT 0x00000200
|
|
||||||
#define LOG_APPEND_TO_EXISTING_FILE 0x00000400
|
|
||||||
#define LOG_FLUSH_EACH_LINE 0x00000800
|
|
||||||
#define LOG_WILDCARD 0x000001ff
|
|
||||||
|
|
Loading…
Reference in New Issue