Last icon used counts, all others deleted

git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@2012 212acab6-be3b-0410-9dea-997c60f758d6
This commit is contained in:
kichik 2002-12-29 19:46:29 +00:00
parent 65e19753ac
commit 54240fcfc6
3 changed files with 20 additions and 13 deletions

View file

@ -94,7 +94,7 @@ CResourceEditor::~CResourceEditor() {
// Adds/Replaces/Removes a resource.
// If lpData is 0 UpdateResource removes the resource.
void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
bool CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
CResourceDirectory* nameDir = 0;
CResourceDirectory* langDir = 0;
CResourceDataEntry* data = 0;
@ -118,7 +118,7 @@ void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguag
// Replace/Add the resource
if (data) {
data->SetData(lpData, dwSize);
return;
return true;
}
if (!nameDir) {
@ -151,18 +151,20 @@ void CResourceEditor::UpdateResource(char* szType, char* szName, LANGID wLanguag
}
}
}
else return false;
return true;
}
void CResourceEditor::UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
UpdateResource(MAKEINTRESOURCE(szType), szName, wLanguage, lpData, dwSize);
bool CResourceEditor::UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
return UpdateResource(MAKEINTRESOURCE(szType), szName, wLanguage, lpData, dwSize);
}
void CResourceEditor::UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
UpdateResource(szType, MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize);
bool CResourceEditor::UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
return UpdateResource(szType, MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize);
}
void CResourceEditor::UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
UpdateResource(MAKEINTRESOURCE(szType), MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize);
bool CResourceEditor::UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize) {
return UpdateResource(MAKEINTRESOURCE(szType), MAKEINTRESOURCE(szName), wLanguage, lpData, dwSize);
}
// Returns a copy of the resource requested

View file

@ -62,10 +62,10 @@ public:
CResourceEditor(BYTE* pbPE, int iSize);
virtual ~CResourceEditor();
void UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
void UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
void UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
void UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
bool UpdateResource(char* szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
bool UpdateResource(WORD szType, char* szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
bool UpdateResource(char* szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
bool UpdateResource(WORD szType, WORD szName, LANGID wLanguage, BYTE* lpData, DWORD dwSize);
BYTE* GetResource(char* szType, char* szName, LANGID wLanguage);
BYTE* Save(DWORD &dwSize);

View file

@ -127,9 +127,14 @@ int replace_icon(CResourceEditor* re, WORD wIconId, char* filename)
RsrcIconGroupEntry* ige = (RsrcIconGroupEntry*)(rsrcIconGroup + sizeof(IconGroupHeader));
int i = 1;
// Delete old icons
while (re->UpdateResource(RT_ICON, MAKEINTRESOURCE(i++), MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), 0, 0));
int iNewIconSize = 0;
for (int i = 0; i < igh.wCount; i++) {
for (i = 0; i < igh.wCount; i++) {
fread(ige, sizeof(FileIconGroupEntry)-sizeof(DWORD), 1, f);
ige->wRsrcId = i+1;