/* * manifest.h * * This file is a part of NSIS. * * Copyright (C) 1999-2009 Nullsoft and Contributors * * Licensed under the zlib/libpng license (the "License"); * you may not use this file except in compliance with the License. * * Licence details can be found in the file COPYING. * * This software is provided 'as-is', without any express or implied * warranty. * * Reviewed for Unicode support by Jim Park -- 08/22/2007 */ #ifndef ___MANIFEST_H___ #define ___MANIFEST_H___ #include "tstring.h" #include "strlist.h" namespace manifest { enum comctl { comctl_old, comctl_xp }; enum exec_level { exec_level_none, exec_level_user, exec_level_highest, exec_level_admin }; class SupportedOSList { StringList m_list; bool m_isdefaultlist; public: SupportedOSList() : m_isdefaultlist(false) {} bool append(const TCHAR* osid); int getcount() const { return m_list.getnum(); } bool isdefaultlist() const { return m_isdefaultlist; } const TCHAR* get(int idx) { int pos = m_list.idx2pos(idx); if (-1 == pos) return 0; return m_list.get() + pos; } void deleteall() { m_list.deleteall(); m_isdefaultlist = false; } void addall() { append("WinVista"); append("Win7"); append("Win8"); } void setdefault() { m_list.deleteall(); append("Win7"); append("Win8"); m_isdefaultlist = true; } }; std::string generate(comctl, exec_level, SupportedOSList&); }; #endif//!___MANIFEST_H___