OSDN Git Service

use boost_1_56_0 and build by VS2013
[yamy/yamy.git] / s / installer.h
1 ///////////////////////////////////////////////////////////////////////////////\r
2 // installer.h\r
3 \r
4 \r
5 #ifndef _INSTALLER_H\r
6 #  define _INSTALLER_H\r
7 \r
8 \r
9 namespace Installer\r
10 {\r
11 /////////////////////////////////////////////////////////////////////////////\r
12 // SetupFile\r
13 \r
14 // files to copy\r
15 namespace SetupFile {\r
16 enum Kind {\r
17         File,\r
18         Dir,\r
19         Dll,\r
20 };\r
21 \r
22 enum OS {\r
23         ALL,\r
24         W9x, // W95, W98,\r
25         NT,  NT4, W2k,                          // W2k includes XP\r
26 };\r
27 \r
28 enum Destination {\r
29         ToDest,\r
30         ToDriver,\r
31 };\r
32 \r
33 enum Flag {\r
34         Normal = 1,\r
35 };\r
36 \r
37 struct Data {\r
38         Kind m_kind;\r
39         OS m_os;\r
40         u_int32 m_flags;                                /// user defined flags\r
41         const _TCHAR *m_from;\r
42         Destination m_destination;\r
43         const _TCHAR *m_to;\r
44 };\r
45 }\r
46 \r
47 \r
48 /////////////////////////////////////////////////////////////////////////////\r
49 // Locale / StringResource\r
50 \r
51 enum Locale {\r
52         LOCALE_Japanese_Japan_932 = 0,\r
53         LOCALE_C = 1,\r
54 };\r
55 \r
56 struct StringResource {\r
57         UINT m_id;\r
58         _TCHAR *m_str;\r
59 };\r
60 \r
61 class Resource\r
62 {\r
63         const StringResource *m_stringResources;\r
64 \r
65         Locale m_locale;\r
66 \r
67 public:\r
68         // constructor\r
69         Resource(const StringResource *i_stringResources);\r
70         Resource(const StringResource *i_stringResources, Locale i_locale)\r
71                         : m_stringResources(i_stringResources), m_locale(i_locale) { }\r
72 \r
73         // get resource string\r
74         const _TCHAR *loadString(UINT i_id);\r
75 \r
76         // locale\r
77         Locale getLocale() const {\r
78                 return m_locale;\r
79         }\r
80 };\r
81 \r
82 \r
83 /////////////////////////////////////////////////////////////////////////////\r
84 // Utility Functions\r
85 \r
86 // createLink - uses the shell's IShellLink and IPersistFile interfaces\r
87 //   to create and store a shortcut to the specified object.\r
88 HRESULT createLink(LPCTSTR i_pathObj, LPCTSTR i_pathLink, LPCTSTR i_desc,\r
89                                    LPCTSTR i_workingDirectory = NULL);\r
90 \r
91 // create file extension information\r
92 void createFileExtension(const tstringi &i_ext, const tstring &i_contentType,\r
93                                                  const tstringi &i_fileType,\r
94                                                  const tstring &i_fileTypeName,\r
95                                                  const tstringi &i_iconPath,\r
96                                                  const tstring &i_command);\r
97 \r
98 // remove file extension information\r
99 void removeFileExtension(const tstringi &i_ext, const tstringi &i_fileType);\r
100 \r
101 // create uninstallation information\r
102 void createUninstallInformation(const tstringi &i_name,\r
103                                                                 const tstring &i_displayName,\r
104                                                                 const tstring &i_commandLine);\r
105 \r
106 // remove uninstallation information\r
107 void removeUninstallInformation(const tstringi &i_name);\r
108 \r
109 // normalize path\r
110 tstringi normalizePath(tstringi i_path);\r
111 \r
112 // create deep directory\r
113 bool createDirectories(const _TCHAR *i_folder);\r
114 \r
115 // get driver directory\r
116 tstringi getDriverDirectory();\r
117 \r
118 // get current directory\r
119 tstringi getModuleDirectory();\r
120 \r
121 // get start menu name\r
122 tstringi getStartMenuName(const tstringi &i_shortcutName);\r
123 \r
124 // get start up name\r
125 tstringi getStartUpName(const tstringi &i_shortcutName);\r
126 \r
127 // create driver service\r
128 DWORD createDriverService(const tstringi &i_serviceName,\r
129                                                   const tstring &i_serviceDescription,\r
130                                                   const tstringi &i_driverPath,\r
131                                                   const _TCHAR *i_preloadedGroups,\r
132                                                   bool forUsb);\r
133 \r
134 // remove driver service\r
135 DWORD removeDriverService(const tstringi &i_serviceName);\r
136 \r
137 // check operating system\r
138 bool checkOs(SetupFile::OS i_os);\r
139 \r
140 // install files\r
141 bool installFiles(const SetupFile::Data *i_setupFiles,\r
142                                   size_t i_setupFilesSize, u_int32 i_flags,\r
143                                   const tstringi &i_srcDir, const tstringi &i_destDir);\r
144 \r
145 // remove files from src\r
146 bool removeSrcFiles(const SetupFile::Data *i_setupFiles,\r
147                                         size_t i_setupFilesSize, u_int32 i_flags,\r
148                                         const tstringi &i_srcDir);\r
149 \r
150 // remove files\r
151 void removeFiles(const SetupFile::Data *i_setupFiles,\r
152                                  size_t i_setupFilesSize, u_int32 i_flags,\r
153                                  const tstringi &i_destDir);\r
154 \r
155 // uninstall step1\r
156 int uninstallStep1(const _TCHAR *i_uninstallOption);\r
157 \r
158 // uninstall step2\r
159 // (after this function, we cannot use any resource)\r
160 void uninstallStep2(const _TCHAR *i_argByStep1);\r
161 }\r
162 \r
163 \r
164 #endif // _INSTALLER_H\r