summaryrefslogtreecommitdiffstats
path: root/tools/wixl/msi-default.vala
blob: 6d536b07f265563d2c57942a890b69ceb2cbace8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
namespace Wixl {

    public class MSIDefault {
        [Flags]
        public enum ActionFlags {
            ADMIN_EXECUTE_SEQUENCE,
            ADMIN_UI_SEQUENCE,
            ADVT_EXECUTE_SEQUENCE,
            INSTALL_EXECUTE_SEQUENCE,
            INSTALL_UI_SEQUENCE,

            ALL = -1,
        }

        public struct ActionInfo {
            string name;
            string? condition;
            int sequence;
            ActionFlags flags;
        }

        public enum Action {
            InstallInitialize,
            InstallExecute,
            InstallExecuteAgain,
            InstallFinalize,
            InstallFiles,
            InstallAdminPackage,
            FileCost,
            CostInitialize,
            CostFinalize,
            InstallValidate,
            ExecuteAction,
            CreateShortcuts,
            MsiPublishAssemblies,
            PublishComponents,
            PublishFeatures,
            PublishProduct,
            RegisterClassInfo,
            RegisterExtensionInfo,
            RegisterMIMEInfo,
            RegisterProgIdInfo,
            AllocateRegistrySpace,
            AppSearch,
            BindImage,
            CCPSearch,
            CreateFolders,
            DeleteServices,
            DuplicateFiles,
            FindRelatedProducts,
            InstallODBC,
            InstallServices,
            MsiConfigureServices,
            IsolateComponents,
            LaunchConditions,
            MigrateFeatureStates,
            MoveFiles,
            PatchFiles,
            ProcessComponents,
            RegisterComPlus,
            RegisterFonts,
            RegisterProduct,
            RegisterTypeLibraries,
            RegisterUser,
            RemoveDuplicateFiles,
            RemoveEnvironmentStrings,
            RemoveFiles,
            RemoveFolders,
            RemoveIniValues,
            RemoveODBC,
            RemoveRegistryValues,
            RemoveShortcuts,
            RMCCPSearch,
            SelfRegModules,
            SelfUnregModules,
            SetODBCFolders,
            StartServices,
            StopServices,
            MsiUnpublishAssemblies,
            UnpublishComponents,
            UnpublishFeatures,
            UnregisterClassInfo,
            UnregisterComPlus,
            UnregisterExtensionInfo,
            UnregisterFonts,
            UnregisterMIMEInfo,
            UnregisterProgIdInfo,
            UnregisterTypeLibraries,
            ValidateProductID,
            WriteEnvironmentStrings,
            WriteIniValues,
            WriteRegistryValues,
        }

        static const ActionInfo[] actions = {
            { "InstallInitialize", null, 1500, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallExecute", "NOT Installed", 6500, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallExecuteAgain", "NOT Installed", 6550, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallFinalize", null, 6600, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallFiles", null, 4000, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallAdminPackage", null, 3900, ActionFlags.ADMIN_EXECUTE_SEQUENCE },
            { "FileCost", null, 900, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.ADMIN_UI_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "CostInitialize", null, 800, ActionFlags.ALL },
            { "CostFinalize", null, 1000, ActionFlags.ALL },
            { "InstallValidate", null, 1400, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "ExecuteAction", null, 1300, ActionFlags.ADMIN_UI_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "CreateShortcuts", null, 4500, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "MsiPublishAssemblies", null, 6250, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "PublishComponents", null, 6200, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "PublishFeatures", null, 6300, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "PublishProduct", null, 6400, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterClassInfo", null, 4600, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterExtensionInfo", null, 4700, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterMIMEInfo", null, 4900, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterProgIdInfo", null, 4800, ActionFlags.ADVT_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "AllocateRegistrySpace", "NOT Installed", 1550, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "AppSearch", null, 50, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "BindImage", null, 4300, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "CCPSearch", "NOT Installed", 500, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "CreateFolders", null, 3700, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "DeleteServices", "VersionNT", 2000, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "DuplicateFiles", null, 4210, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "FindRelatedProducts", null, 25, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "InstallODBC", null, 5400, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "InstallServices", "VersionNT", 5800, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "MsiConfigureServices", "VersionNT>=600", 5850, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "IsolateComponents", null, 950, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "LaunchConditions", null, 100, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.ADMIN_UI_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "MigrateFeatureStates", null, 1200, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "MoveFiles", null, 3800, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "PatchFiles", null, 4090, ActionFlags.ADMIN_EXECUTE_SEQUENCE|ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "ProcessComponents", null, 1600, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterComPlus", null, 5700, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterFonts", null, 5300, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterProduct", null, 6100, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterTypeLibraries", null, 5500, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RegisterUser", null, 6000, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveDuplicateFiles", null, 3400, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveEnvironmentStrings", null, 3300, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveFiles", null, 3500, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveFolders", null, 3600, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveIniValues", null, 3100, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveODBC", null, 2400, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveRegistryValues", null, 2600, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RemoveShortcuts", null, 3200, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "RMCCPSearch", "NOT Installed", 600, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "SelfRegModules", null, 5600, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "SelfUnregModules", null, 2200, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "SetODBCFolders", null, 1100, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "StartServices", "VersionNT", 5900, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "StopServices", "VersionNT", 1900, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "MsiUnpublishAssemblies", null, 1750, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnpublishComponents", null, 1700, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnpublishFeatures", null, 1800, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterClassInfo", null, 2700, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterComPlus", null, 2100, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterExtensionInfo", null, 2800, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterFonts", null, 2500, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterMIMEInfo", null, 3000, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterProgIdInfo", null, 2900, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "UnregisterTypeLibraries", null, 2300, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "ValidateProductID", null, 700, ActionFlags.INSTALL_EXECUTE_SEQUENCE|ActionFlags.INSTALL_UI_SEQUENCE },
            { "WriteEnvironmentStrings", null, 5200, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "WriteIniValues", null, 5100, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
            { "WriteRegistryValues", null, 5000, ActionFlags.INSTALL_EXECUTE_SEQUENCE },
        };

        public static ActionInfo get_action (Action action) {
            return actions[action];
        }

        public static ActionInfo? get_action_by_name (string name) {
            ActionInfo? action = null;

            try {
                action = actions[enum_from_string<Action> (name.down ())];
            } catch (GLib.Error error) {
            }

            return action;
        }
    }

} // Wixl