2006-10-28 19:45:02 +00:00
|
|
|
/*
|
|
|
|
* manifest.h
|
|
|
|
*
|
|
|
|
* This file is a part of NSIS.
|
|
|
|
*
|
2021-01-01 20:27:52 +00:00
|
|
|
* Copyright (C) 1999-2021 Nullsoft and Contributors
|
2006-10-28 19:45:02 +00:00
|
|
|
*
|
|
|
|
* 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.
|
2010-03-24 17:22:56 +00:00
|
|
|
*
|
|
|
|
* Reviewed for Unicode support by Jim Park -- 08/22/2007
|
2006-10-28 19:45:02 +00:00
|
|
|
*/
|
|
|
|
|
2006-09-16 13:38:21 +00:00
|
|
|
#ifndef ___MANIFEST_H___
|
|
|
|
#define ___MANIFEST_H___
|
|
|
|
|
2010-03-24 17:22:56 +00:00
|
|
|
#include "tstring.h"
|
2012-09-20 10:18:40 +00:00
|
|
|
#include "strlist.h"
|
2006-09-16 13:38:21 +00:00
|
|
|
|
|
|
|
namespace manifest
|
|
|
|
{
|
2018-05-14 19:07:17 +00:00
|
|
|
enum flags
|
|
|
|
{
|
2019-08-16 19:07:02 +00:00
|
|
|
disablewindowfiltering = 0x01, // Win8+ (Allow EnumWindows() to return Windows 8 immersive apps)
|
2019-10-16 19:55:33 +00:00
|
|
|
gdiscaling = 0x02, // Win10FU1703+ blogs.windows.com/windowsdeveloper/2017/05/19/improving-high-dpi-experience-gdi-based-desktop-apps/
|
2018-05-14 19:07:17 +00:00
|
|
|
flags_default = 0
|
|
|
|
};
|
|
|
|
|
|
|
|
enum comctl // WinXP+
|
2006-09-16 13:38:21 +00:00
|
|
|
{
|
|
|
|
comctl_old,
|
|
|
|
comctl_xp
|
|
|
|
};
|
|
|
|
|
2018-05-14 19:07:17 +00:00
|
|
|
enum exec_level // WinVista+
|
2006-09-16 13:38:21 +00:00
|
|
|
{
|
|
|
|
exec_level_none,
|
|
|
|
exec_level_user,
|
2006-11-10 14:54:23 +00:00
|
|
|
exec_level_highest,
|
2006-09-16 13:38:21 +00:00
|
|
|
exec_level_admin
|
|
|
|
};
|
|
|
|
|
2018-05-14 19:07:17 +00:00
|
|
|
enum dpiaware // WinVista+
|
2012-09-20 18:42:21 +00:00
|
|
|
{
|
|
|
|
dpiaware_notset,
|
|
|
|
dpiaware_false,
|
2017-09-14 17:10:33 +00:00
|
|
|
dpiaware_true, // System DPI on Vista+
|
2019-08-16 19:07:02 +00:00
|
|
|
dpiaware_permonitor, // System DPI on Vista/7/8, PerMonitor on 8.1+ (Undocumented because we don't handle WM_DPICHANGED)
|
2019-06-06 00:42:08 +00:00
|
|
|
dpiaware_explorer // Win8.1+? Undocumented?
|
2012-09-20 18:42:21 +00:00
|
|
|
};
|
|
|
|
|
2019-08-16 19:07:02 +00:00
|
|
|
enum longpathaware
|
|
|
|
{
|
|
|
|
lpaware_notset,
|
|
|
|
lpaware_false,
|
|
|
|
lpaware_true // Win10.0.14352+
|
|
|
|
};
|
|
|
|
|
2018-05-14 19:07:17 +00:00
|
|
|
class SupportedOSList // Win7+
|
2012-09-20 10:18:40 +00:00
|
|
|
{
|
|
|
|
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;
|
|
|
|
}
|
2017-05-03 12:08:09 +00:00
|
|
|
bool addall();
|
2012-09-20 10:18:40 +00:00
|
|
|
void deleteall()
|
|
|
|
{
|
|
|
|
m_list.deleteall();
|
|
|
|
m_isdefaultlist = false;
|
|
|
|
}
|
|
|
|
void setdefault()
|
|
|
|
{
|
|
|
|
m_list.deleteall();
|
2012-10-13 01:47:50 +00:00
|
|
|
append(_T("Win7"));
|
|
|
|
append(_T("Win8"));
|
2014-02-11 01:34:11 +00:00
|
|
|
append(_T("Win8.1")); // In the default list because GetVersion[Ex] lies if this is not set in the manifest
|
2015-07-30 18:47:09 +00:00
|
|
|
append(_T("Win10"));
|
2012-09-20 10:18:40 +00:00
|
|
|
m_isdefaultlist = true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2019-06-06 00:42:08 +00:00
|
|
|
typedef struct {
|
|
|
|
flags Flags;
|
|
|
|
dpiaware DPIA;
|
|
|
|
const TCHAR *DPIA2; // Win10FU1607+
|
2019-08-16 19:07:02 +00:00
|
|
|
longpathaware lpaware;
|
2019-08-17 20:13:07 +00:00
|
|
|
SupportedOSList*pSOSL;
|
2019-06-06 00:42:08 +00:00
|
|
|
const TCHAR *MaxVersionTested; // Win10FU1903+ github.com/microsoft/AppConsult-WinAppsModernizationWorkshop/tree/master/Exercise2
|
|
|
|
} SPECIFICATION;
|
|
|
|
|
|
|
|
std::string generate(comctl, exec_level, const SPECIFICATION&);
|
2020-07-25 20:13:13 +00:00
|
|
|
bool addappendstring(const TCHAR*path, const TCHAR*data);
|
2012-09-20 10:18:40 +00:00
|
|
|
|
2006-09-16 13:38:21 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif//!___MANIFEST_H___
|