2003-06-09 18:59:14 +00:00
|
|
|
// ResourceVersionInfo.h: interface for the CResourceVersionInfo class.
|
|
|
|
//
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#if !defined(AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_)
|
|
|
|
#define AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
#pragma once
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
|
|
#ifdef NSIS_SUPPORT_VERSION_INFO
|
|
|
|
|
|
|
|
#include <algorithm>
|
|
|
|
using namespace std;
|
|
|
|
|
2003-06-12 00:06:23 +00:00
|
|
|
struct version_string_list {
|
|
|
|
int codepage;
|
|
|
|
LANGID lang_id;
|
|
|
|
int name;
|
|
|
|
DefineList *pChildStrings;
|
|
|
|
};
|
|
|
|
|
|
|
|
class CVersionStrigList : public SortedStringListND<struct version_string_list>
|
|
|
|
{
|
|
|
|
public:
|
2003-09-12 11:16:33 +00:00
|
|
|
~CVersionStrigList()
|
|
|
|
{
|
|
|
|
struct version_string_list *itr = (struct version_string_list *) gr.get();
|
|
|
|
int i = gr.getlen() / sizeof(struct version_string_list);
|
|
|
|
|
|
|
|
while (i--)
|
|
|
|
{
|
|
|
|
delete itr[i].pChildStrings;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2003-06-12 00:06:23 +00:00
|
|
|
int add(LANGID langid, int codepage)
|
|
|
|
{
|
|
|
|
char Buff[10];
|
|
|
|
sprintf(Buff, "%04x", langid);
|
|
|
|
int pos = SortedStringListND<struct version_string_list>::add(Buff);
|
|
|
|
if (pos == -1) return false;
|
|
|
|
((struct version_string_list*)gr.get())[pos].pChildStrings = new DefineList;
|
|
|
|
((struct version_string_list*)gr.get())[pos].codepage = codepage;
|
|
|
|
((struct version_string_list*)gr.get())[pos].lang_id = langid;
|
|
|
|
return pos;
|
|
|
|
}
|
|
|
|
|
|
|
|
LANGID get_lang(int idx)
|
|
|
|
{
|
|
|
|
version_string_list *data=(version_string_list *)gr.get();
|
|
|
|
return data[idx].lang_id;
|
|
|
|
}
|
|
|
|
|
|
|
|
int get_codepage(int idx)
|
|
|
|
{
|
|
|
|
version_string_list *data=(version_string_list *)gr.get();
|
|
|
|
return data[idx].codepage;
|
|
|
|
}
|
|
|
|
|
|
|
|
DefineList* get_strings(int idx)
|
|
|
|
{
|
|
|
|
version_string_list *data=(version_string_list *)gr.get();
|
|
|
|
return data[idx].pChildStrings;
|
|
|
|
}
|
|
|
|
|
|
|
|
int find(LANGID lang_id, int codepage)
|
|
|
|
{
|
|
|
|
char Buff[10];
|
|
|
|
sprintf(Buff, "%04x", lang_id);
|
|
|
|
return SortedStringListND<struct version_string_list>::find(Buff);
|
|
|
|
}
|
|
|
|
|
|
|
|
int getlen()
|
|
|
|
{
|
|
|
|
return strings.getlen();
|
|
|
|
}
|
|
|
|
|
|
|
|
int getnum()
|
|
|
|
{
|
|
|
|
return gr.getlen()/sizeof(struct version_string_list);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2003-06-09 18:59:14 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////////////////////
|
|
|
|
class CResourceVersionInfo
|
|
|
|
{
|
|
|
|
VS_FIXEDFILEINFO m_FixedInfo;
|
2003-06-12 00:06:23 +00:00
|
|
|
CVersionStrigList m_ChildStringLists;
|
2003-06-09 18:59:14 +00:00
|
|
|
|
|
|
|
public:
|
|
|
|
CResourceVersionInfo();
|
|
|
|
virtual ~CResourceVersionInfo();
|
2003-06-12 00:06:23 +00:00
|
|
|
int SetKeyValue(LANGID lang_id, int codepage, char* AKeyName, char* AValue);
|
2003-06-09 18:59:14 +00:00
|
|
|
void SetFileFlags(int Value);
|
|
|
|
void SetFileVersion(int HighPart, int LowPart);
|
|
|
|
void SetProductVersion(int HighPart, int LowPart);
|
2003-06-12 00:06:23 +00:00
|
|
|
void ExportToStream(GrowBuf &strm, int Index);
|
|
|
|
int GetStringTablesCount();
|
|
|
|
LANGID GetLangID(int Index);
|
|
|
|
int GetCodePage(int Index);
|
|
|
|
char *FindKey(LANGID LangID, int codepage, char *pKeyName);
|
2003-06-16 19:58:29 +00:00
|
|
|
//bool IsValidCodePage(WORD codePage );
|
2003-06-09 18:59:14 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // !defined(AFX_RESOURCEVERSIONINFO_H__80439ADA_49DA_4623_8DA9_1663FF356E76__INCLUDED_)
|