Initial code commit
Rob Mensching committed
Oct 2, 2017 at 23:49 UTC
f729d16ab0dfd841a16addaefba61a182d0b0d32
65 files changed
+5421
-1
VisualStudio.wixext.sln
new
+59
@@ -0,0 +1,59 @@
1
+
2
+Microsoft Visual Studio Solution File, Format Version 12.00
3
+# Visual Studio 15
4
+VisualStudioVersion = 15.0.26730.16
5
+MinimumVisualStudioVersion = 15.0.26124.0
6
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ca", "src\ca\vsca.vcxproj", "{45308B85-0628-4978-8FC8-6AD9E1AD5949}"
7
+EndProject
8
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.VisualStudio.wixext", "src\wixext\WixToolset.VisualStudio.wixext.csproj", "{61BFD377-9DE1-48B4-8687-560DF68D6F3B}"
9
+EndProject
10
+Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "wixlib", "src\wixlib\vs.wixproj", "{14345C9D-8AF8-435A-BB1B-E067CE7EB321}"
11
+EndProject
12
+Global
13
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
14
+ Debug|Any CPU = Debug|Any CPU
15
+ Debug|x64 = Debug|x64
16
+ Debug|x86 = Debug|x86
17
+ Release|Any CPU = Release|Any CPU
18
+ Release|x64 = Release|x64
19
+ Release|x86 = Release|x86
20
+ EndGlobalSection
21
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
22
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Debug|Any CPU.ActiveCfg = Debug|Win32
23
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Debug|x64.ActiveCfg = Debug|Win32
24
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Debug|x86.ActiveCfg = Debug|Win32
25
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Debug|x86.Build.0 = Debug|Win32
26
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|Any CPU.ActiveCfg = Release|Win32
27
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x64.ActiveCfg = Release|Win32
28
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x86.ActiveCfg = Release|Win32
29
+ {45308B85-0628-4978-8FC8-6AD9E1AD5949}.Release|x86.Build.0 = Release|Win32
30
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
32
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x64.ActiveCfg = Debug|Any CPU
33
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x64.Build.0 = Debug|Any CPU
34
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x86.ActiveCfg = Debug|Any CPU
35
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Debug|x86.Build.0 = Debug|Any CPU
36
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
37
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|Any CPU.Build.0 = Release|Any CPU
38
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x64.ActiveCfg = Release|Any CPU
39
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x64.Build.0 = Release|Any CPU
40
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.ActiveCfg = Release|Any CPU
41
+ {61BFD377-9DE1-48B4-8687-560DF68D6F3B}.Release|x86.Build.0 = Release|Any CPU
42
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|Any CPU.ActiveCfg = Debug|x86
43
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x64.ActiveCfg = Debug|x64
44
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x64.Build.0 = Debug|x64
45
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.ActiveCfg = Debug|x86
46
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Debug|x86.Build.0 = Debug|x86
47
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|Any CPU.ActiveCfg = Release|x86
48
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x64.ActiveCfg = Release|x64
49
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x64.Build.0 = Release|x64
50
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.ActiveCfg = Release|x86
51
+ {14345C9D-8AF8-435A-BB1B-E067CE7EB321}.Release|x86.Build.0 = Release|x86
52
+ EndGlobalSection
53
+ GlobalSection(SolutionProperties) = preSolution
54
+ HideSolutionNode = FALSE
55
+ EndGlobalSection
56
+ GlobalSection(ExtensibilityGlobals) = postSolution
57
+ SolutionGuid = {E4566A6B-47D0-4EA0-989A-D763AC39105D}
58
+ EndGlobalSection
59
+EndGlobal
appveyor.cmd
new
+11
@@ -0,0 +1,11 @@
1
+@setlocal
2
+@pushd %~dp0
3
+
4
+nuget restore
5
+
6
+msbuild -p:Configuration=Release -t:Restore
7
+
8
+msbuild -p:Configuration=Release -t:Pack .\src\wixext\WixToolset.VisualStudio.wixext.csproj
9
+
10
+@popd
11
+@endlocal
\ No newline at end of file
nuget.config
+7
-1
@@ -2,8 +2,14 @@
2
<configuration>
3
<packageSources>
4
<clear />
5
- <add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" />
5
+ <add key="wixtoolset-data" value="https://ci.appveyor.com/nuget/wixtoolset-data" />
6
+ <add key="wixtoolset-extensibility" value="https://ci.appveyor.com/nuget/wixtoolset-extensibility" />
7
<add key="wixtoolset-core" value="https://ci.appveyor.com/nuget/wixtoolset-core" />
8
+ <add key="wixtoolset-core-native" value="https://ci.appveyor.com/nuget/wixtoolset-core-native" />
9
+ <add key="wixtoolset-dtf" value="https://ci.appveyor.com/nuget/wixtoolset-dtf" />
10
+ <add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" />
11
+ <add key="wixtoolset-wcautil" value="https://ci.appveyor.com/nuget/wixtoolset-wcautil" />
12
+ <add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" />
13
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
14
</packageSources>
15
</configuration>
\ No newline at end of file
src/Cpp.Build.props
new
+101
@@ -0,0 +1,101 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project>
5
+ <PropertyGroup>
6
+ <Platform Condition=" '$(Platform)' == 'AnyCPU' ">Win32</Platform>
7
+ <BaseOutputPath>$(OutputPath)</BaseOutputPath>
8
+ <IntDir>$(BaseIntermediateOutputPath)$(Platform)\</IntDir>
9
+ <OutDir>$(OutputPath)$(Platform)\</OutDir>
10
+ </PropertyGroup>
11
+
12
+ <ItemDefinitionGroup>
13
+ <ClCompile>
14
+ <DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings>
15
+ <WarningLevel>Level4</WarningLevel>
16
+ <AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
17
+ <PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
18
+ <PrecompiledHeader>Use</PrecompiledHeader>
19
+ <PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
20
+ <CallingConvention>StdCall</CallingConvention>
21
+ <TreatWarningAsError>true</TreatWarningAsError>
22
+ <ExceptionHandling>false</ExceptionHandling>
23
+ <AdditionalOptions>-YlprecompDefine</AdditionalOptions>
24
+ <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
25
+ <MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) > 4 ">true</MultiProcessorCompilation>
26
+ </ClCompile>
27
+ <ResourceCompile>
28
+ <PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
29
+ <AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
30
+ </ResourceCompile>
31
+ <Lib>
32
+ <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
33
+ </Lib>
34
+ <Link>
35
+ <SubSystem>$(ProjectSubSystem)</SubSystem>
36
+ <ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile>
37
+ <NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint>
38
+ <GenerateDebugInformation>true</GenerateDebugInformation>
39
+ <AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
40
+ <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
41
+ <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
42
+ </Link>
43
+ </ItemDefinitionGroup>
44
+
45
+ <ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'">
46
+ <ClCompile>
47
+ <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
48
+ </ClCompile>
49
+ </ItemDefinitionGroup>
50
+ <ItemDefinitionGroup Condition=" '$(Platform)'=='arm' ">
51
+ <ClCompile>
52
+ <CallingConvention>CDecl</CallingConvention>
53
+ </ClCompile>
54
+ </ItemDefinitionGroup>
55
+ <ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' ">
56
+ <ClCompile>
57
+ <DebugInformationFormat>OldStyle</DebugInformationFormat>
58
+ <OmitDefaultLibName>true</OmitDefaultLibName>
59
+ <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
60
+ </ClCompile>
61
+ </ItemDefinitionGroup>
62
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' ">
63
+ <ClCompile>
64
+ <Optimization>Disabled</Optimization>
65
+ <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
66
+ <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
67
+ <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
68
+ </ClCompile>
69
+ </ItemDefinitionGroup>
70
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' ">
71
+ <ClCompile>
72
+ <BasicRuntimeChecks></BasicRuntimeChecks>
73
+ <RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
74
+ </ClCompile>
75
+ </ItemDefinitionGroup>
76
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' ">
77
+ <ClCompile>
78
+ <Optimization>MinSpace</Optimization>
79
+ <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
80
+ <FunctionLevelLinking>true</FunctionLevelLinking>
81
+ <IntrinsicFunctions>true</IntrinsicFunctions>
82
+ <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
83
+ </ClCompile>
84
+ <Link>
85
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
86
+ <OptimizeReferences>true</OptimizeReferences>
87
+ </Link>
88
+ </ItemDefinitionGroup>
89
+ <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' ">
90
+ <ClCompile>
91
+ <BasicRuntimeChecks></BasicRuntimeChecks>
92
+ <RuntimeLibrary>MultiThreadedDll</RuntimeLibrary>
93
+ </ClCompile>
94
+ </ItemDefinitionGroup>
95
+ <ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' ">
96
+ <Link>
97
+ <KeyFile>$(LinkKeyFile)</KeyFile>
98
+ <DelaySign>$(LinkDelaySign)</DelaySign>
99
+ </Link>
100
+ </ItemDefinitionGroup>
101
+</Project>
src/Directory.Build.props
new
+22
@@ -0,0 +1,22 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project>
5
+ <PropertyGroup>
6
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
7
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
8
+ <BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)..\build\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
9
+ <OutputPath>$(MSBuildThisFileDirectory)..\build\$(Configuration)\</OutputPath>
10
+
11
+ <Authors>WiX Toolset Team</Authors>
12
+ <Company>WiX Toolset</Company>
13
+ <Copyright>Copyright (c) .NET Foundation and contributors. All rights reserved.</Copyright>
14
+ </PropertyGroup>
15
+
16
+ <PropertyGroup>
17
+ <WixToolsetRootFolder>$(MSBuildThisFileDirectory)..\..\</WixToolsetRootFolder>
18
+ </PropertyGroup>
19
+
20
+ <Import Project="Cpp.Build.props" Condition=" '$(MSBuildProjectExtension)'=='.vcxproj' " />
21
+ <Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " />
22
+</Project>
src/FindLocalWix.props
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5
+ <PropertyGroup>
6
+ <WixTargetsPath Condition=" '$(Configuration)' != 'Release' And Exists('$(MSBuildThisFileDirectory)..\..\Core\build\Release\publish\wix.targets') ">$(MSBuildThisFileDirectory)..\..\Core\build\Release\publish\wix.targets</WixTargetsPath>
7
+ </PropertyGroup>
8
+</Project>
src/ca/dllmain.cpp
new
+26
@@ -0,0 +1,26 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+#include "precomp.h"
4
+
5
+/********************************************************************
6
+DllMain - standard entry point for all WiX custom actions
7
+
8
+********************************************************************/
9
+extern "C" BOOL WINAPI DllMain(
10
+ IN HINSTANCE hInst,
11
+ IN ULONG ulReason,
12
+ IN LPVOID)
13
+{
14
+ switch(ulReason)
15
+ {
16
+ case DLL_PROCESS_ATTACH:
17
+ WcaGlobalInitialize(hInst);
18
+ break;
19
+
20
+ case DLL_PROCESS_DETACH:
21
+ WcaGlobalFinalize();
22
+ break;
23
+ }
24
+
25
+ return TRUE;
26
+}
src/ca/packages.config
new
+6
@@ -0,0 +1,6 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<packages>
3
+ <package id="Microsoft.VisualStudio.Setup.Configuration.Native" version="1.14.114" targetFramework="native" developmentDependency="true" />
4
+ <package id="WixToolset.DUtil" version="4.0.6" targetFramework="native" />
5
+ <package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" />
6
+</packages>
\ No newline at end of file
src/ca/precomp.h
new
+13
@@ -0,0 +1,13 @@
1
+#pragma once
2
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
+
4
+
5
+#include <windows.h>
6
+#include <msiquery.h>
7
+
8
+#define MAXUINT USHRT_MAX
9
+#include <Setup.Configuration.h>
10
+
11
+#include "wcautil.h"
12
+#include "fileutil.h"
13
+#include "strutil.h"
src/ca/vsca.cpp
new
+432
@@ -0,0 +1,432 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+#include "precomp.h"
4
+
5
+typedef HRESULT (WINAPI *PFN_PROCESS_INSTANCE)(
6
+ __in_opt ISetupInstance* pInstance,
7
+ __in DWORD64 qwVersion,
8
+ __in BOOL fComplete
9
+ );
10
+
11
+struct VS_INSTANCE
12
+{
13
+ DWORD64 qwMinVersion;
14
+ DWORD64 qwMaxVersion;
15
+ PFN_PROCESS_INSTANCE pfnProcessInstance;
16
+};
17
+
18
+struct VS_COMPONENT_PROPERTY
19
+{
20
+ LPCWSTR pwzComponent;
21
+ LPCWSTR pwzProperty;
22
+};
23
+
24
+static HRESULT InstanceInProducts(
25
+ __in ISetupInstance* pInstance,
26
+ __in DWORD cProducts,
27
+ __in LPCWSTR* rgwzProducts
28
+ );
29
+
30
+static HRESULT InstanceIsGreater(
31
+ __in_opt ISetupInstance* pPreviousInstance,
32
+ __in DWORD64 qwPreviousVersion,
33
+ __in ISetupInstance* pCurrentInstance,
34
+ __in DWORD64 qwCurrentVersion
35
+ );
36
+
37
+static HRESULT ProcessInstance(
38
+ __in ISetupInstance* pInstance,
39
+ __in LPCWSTR wzProperty,
40
+ __in DWORD cComponents,
41
+ __in VS_COMPONENT_PROPERTY* rgComponents
42
+ );
43
+
44
+static HRESULT ProcessVS2017(
45
+ __in_opt ISetupInstance* pInstance,
46
+ __in DWORD64 qwVersion,
47
+ __in BOOL fComplete
48
+ );
49
+
50
+static HRESULT SetPropertyForComponent(
51
+ __in DWORD cComponents,
52
+ __in VS_COMPONENT_PROPERTY* rgComponents,
53
+ __in LPCWSTR wzComponent
54
+ );
55
+
56
+static VS_INSTANCE vrgInstances[] =
57
+{
58
+ { FILEMAKEVERSION(15, 0, 0, 0), FILEMAKEVERSION(15, 0xffff, 0xffff, 0xffff), ProcessVS2017 },
59
+};
60
+
61
+/******************************************************************
62
+ FindInstances - entry point for VS custom action to find instances
63
+
64
+*******************************************************************/
65
+extern "C" UINT __stdcall FindInstances(
66
+ __in MSIHANDLE hInstall
67
+ )
68
+{
69
+ HRESULT hr = S_OK;
70
+ UINT er = ERROR_SUCCESS;
71
+ BOOL fComInitialized = FALSE;
72
+ ISetupConfiguration* pConfiguration = NULL;
73
+ ISetupHelper* pHelper = NULL;
74
+ IEnumSetupInstances* pEnumInstances = NULL;
75
+ ISetupInstance* rgpInstances[1] = {};
76
+ ISetupInstance* pInstance = NULL;
77
+ ULONG cInstancesFetched = 0;
78
+ BSTR bstrVersion = NULL;
79
+ DWORD64 qwVersion = 0;
80
+
81
+ hr = WcaInitialize(hInstall, "VSFindInstances");
82
+ ExitOnFailure(hr, "Failed to initialize custom action.");
83
+
84
+ hr = ::CoInitialize(NULL);
85
+ ExitOnFailure(hr, "Failed to initialize COM.");
86
+
87
+ fComInitialized = TRUE;
88
+
89
+ hr = ::CoCreateInstance(__uuidof(SetupConfiguration), NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pConfiguration));
90
+ if (REGDB_E_CLASSNOTREG != hr)
91
+ {
92
+ ExitOnFailure(hr, "Failed to initialize setup configuration class.");
93
+ }
94
+ else
95
+ {
96
+ WcaLog(LOGMSG_VERBOSE, "Setup configuration not registered; assuming no instances installed.");
97
+
98
+ hr = S_OK;
99
+ ExitFunction();
100
+ }
101
+
102
+ hr = pConfiguration->QueryInterface(IID_PPV_ARGS(&pHelper));
103
+ if (FAILED(hr))
104
+ {
105
+ WcaLog(LOGMSG_VERBOSE, "Setup configuration helpers not implemented; assuming Visual Studio 2017.");
106
+
107
+ qwVersion = FILEMAKEVERSION(15, 0, 0, 0);
108
+ hr = S_OK;
109
+ }
110
+
111
+ hr = pConfiguration->EnumInstances(&pEnumInstances);
112
+ ExitOnFailure(hr, "Failed to get instance enumerator.");
113
+
114
+ do
115
+ {
116
+ hr = pEnumInstances->Next(1, rgpInstances, &cInstancesFetched);
117
+ if (SUCCEEDED(hr) && cInstancesFetched)
118
+ {
119
+ pInstance = rgpInstances[0];
120
+ if (pInstance)
121
+ {
122
+ if (pHelper)
123
+ {
124
+ hr = pInstance->GetInstallationVersion(&bstrVersion);
125
+ ExitOnFailure(hr, "Failed to get installation version.");
126
+
127
+ hr = pHelper->ParseVersion(bstrVersion, &qwVersion);
128
+ ExitOnFailure(hr, "Failed to parse installation version.");
129
+ }
130
+
131
+ for (DWORD i = 0; i < countof(vrgInstances); ++i)
132
+ {
133
+ const VS_INSTANCE* pElem = &vrgInstances[i];
134
+
135
+ if (pElem->qwMinVersion <= qwVersion && qwVersion <= pElem->qwMaxVersion)
136
+ {
137
+ hr = pElem->pfnProcessInstance(pInstance, qwVersion, FALSE);
138
+ ExitOnFailure(hr, "Failed to process instance.");
139
+ }
140
+ }
141
+ }
142
+
143
+ ReleaseNullBSTR(bstrVersion);
144
+ ReleaseNullObject(pInstance);
145
+ }
146
+ } while (SUCCEEDED(hr) && cInstancesFetched);
147
+
148
+ // Complete all registered processing functions.
149
+ for (DWORD i = 0; i < countof(vrgInstances); ++i)
150
+ {
151
+ const VS_INSTANCE* pElem = &vrgInstances[i];
152
+
153
+ if (pElem->qwMinVersion <= qwVersion && qwVersion <= pElem->qwMaxVersion)
154
+ {
155
+ hr = pElem->pfnProcessInstance(NULL, 0, TRUE);
156
+ ExitOnFailure(hr, "Failed to process latest instance.");
157
+ }
158
+ }
159
+
160
+LExit:
161
+ ReleaseBSTR(bstrVersion);
162
+ ReleaseObject(pInstance);
163
+ ReleaseObject(pEnumInstances);
164
+ ReleaseObject(pHelper);
165
+ ReleaseObject(pConfiguration);
166
+
167
+ if (fComInitialized)
168
+ {
169
+ ::CoUninitialize();
170
+ }
171
+
172
+ if (FAILED(hr))
173
+ {
174
+ er = ERROR_INSTALL_FAILURE;
175
+ }
176
+
177
+ return WcaFinalize(er);
178
+}
179
+
180
+static HRESULT InstanceInProducts(
181
+ __in ISetupInstance* pInstance,
182
+ __in DWORD cProducts,
183
+ __in LPCWSTR* rgwzProducts
184
+ )
185
+{
186
+ HRESULT hr = S_OK;
187
+ ISetupInstance2* pInstance2 = NULL;
188
+ ISetupPackageReference* pProduct = NULL;
189
+ BSTR bstrId = NULL;
190
+
191
+ hr = pInstance->QueryInterface(IID_PPV_ARGS(&pInstance2));
192
+ if (FAILED(hr))
193
+ {
194
+ // Older implementations shipped when only VS SKUs were supported.
195
+ WcaLog(LOGMSG_VERBOSE, "Could not query instance for product information; assuming supported product.");
196
+
197
+ hr = S_OK;
198
+ ExitFunction();
199
+ }
200
+
201
+ hr = pInstance2->GetProduct(&pProduct);
202
+ ExitOnFailure(hr, "Failed to get product package reference.");
203
+
204
+ hr = pProduct->GetId(&bstrId);
205
+ ExitOnFailure(hr, "Failed to get product package ID.");
206
+
207
+ for (DWORD i = 0; i < cProducts; ++i)
208
+ {
209
+ const LPCWSTR wzProduct = rgwzProducts[i];
210
+
211
+ if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, NORM_IGNORECASE, bstrId, -1, wzProduct, -1))
212
+ {
213
+ hr = S_OK;
214
+ ExitFunction();
215
+ }
216
+ }
217
+
218
+ hr = S_FALSE;
219
+
220
+LExit:
221
+ ReleaseBSTR(bstrId);
222
+ ReleaseObject(pProduct);
223
+ ReleaseObject(pInstance2);
224
+
225
+ return hr;
226
+}
227
+
228
+static HRESULT InstanceIsGreater(
229
+ __in_opt ISetupInstance* pPreviousInstance,
230
+ __in DWORD64 qwPreviousVersion,
231
+ __in ISetupInstance* pCurrentInstance,
232
+ __in DWORD64 qwCurrentVersion
233
+ )
234
+{
235
+ HRESULT hr = S_OK;
236
+ FILETIME ftPreviousInstance = {};
237
+ FILETIME ftCurrentInstance = {};
238
+
239
+ if (qwPreviousVersion != qwCurrentVersion)
240
+ {
241
+ return qwPreviousVersion < qwCurrentVersion ? S_OK : S_FALSE;
242
+ }
243
+
244
+ hr = pPreviousInstance->GetInstallDate(&ftPreviousInstance);
245
+ ExitOnFailure(hr, "Failed to get previous install date.");
246
+
247
+ hr = pCurrentInstance->GetInstallDate(&ftCurrentInstance);
248
+ ExitOnFailure(hr, "Failed to get current install date.");
249
+
250
+ return 0 > ::CompareFileTime(&ftPreviousInstance, &ftCurrentInstance) ? S_OK : S_FALSE;
251
+
252
+LExit:
253
+ return hr;
254
+}
255
+
256
+static HRESULT ProcessInstance(
257
+ __in ISetupInstance* pInstance,
258
+ __in LPCWSTR wzProperty,
259
+ __in DWORD cComponents,
260
+ __in VS_COMPONENT_PROPERTY* rgComponents
261
+ )
262
+{
263
+ HRESULT hr = S_OK;
264
+ ISetupInstance2* pInstance2 = NULL;
265
+ BSTR bstrPath = NULL;
266
+ LPSAFEARRAY psaPackages = NULL;
267
+ LONG lPackageIndex = 0;
268
+ LONG clMaxPackages = 0;
269
+ ISetupPackageReference** rgpPackages = NULL;
270
+ ISetupPackageReference* pPackage = NULL;
271
+ BSTR bstrPackageId = NULL;
272
+
273
+ hr = pInstance->GetInstallationPath(&bstrPath);
274
+ ExitOnFailure(hr, "Failed to get installation path.");
275
+
276
+ hr = WcaSetProperty(wzProperty, bstrPath);
277
+ ExitOnFailure(hr, "Failed to set installation path property: %ls", wzProperty);
278
+
279
+ hr = pInstance->QueryInterface(IID_PPV_ARGS(&pInstance2));
280
+ if (FAILED(hr))
281
+ {
282
+ // Older implementation did not expose installed components.
283
+ hr = S_OK;
284
+ ExitFunction();
285
+ }
286
+
287
+ hr = pInstance2->GetPackages(&psaPackages);
288
+ ExitOnFailure(hr, "Failed to get packages from instance.");
289
+
290
+ hr = ::SafeArrayGetLBound(psaPackages, 1, &lPackageIndex);
291
+ ExitOnFailure(hr, "Failed to get lower bound of packages array.");
292
+
293
+ hr = ::SafeArrayGetUBound(psaPackages, 1, &clMaxPackages);
294
+ ExitOnFailure(hr, "Failed to get upper bound of packages array.");
295
+
296
+ // Faster access to single dimension SAFEARRAY elements.
297
+ hr = ::SafeArrayAccessData(psaPackages, reinterpret_cast<LPVOID*>(&rgpPackages));
298
+ ExitOnFailure(hr, "Failed to access packages array.")
299
+
300
+ for (; lPackageIndex <= clMaxPackages; ++lPackageIndex)
301
+ {
302
+ pPackage = rgpPackages[lPackageIndex];
303
+
304
+ if (pPackage)
305
+ {
306
+ hr = pPackage->GetId(&bstrPackageId);
307
+ ExitOnFailure(hr, "Failed to get package ID.");
308
+
309
+ hr = SetPropertyForComponent(cComponents, rgComponents, bstrPackageId);
310
+ ExitOnFailure(hr, "Failed to set property for component: %ls", bstrPackageId);
311
+
312
+ ReleaseNullBSTR(bstrPackageId);
313
+ }
314
+ }
315
+
316
+LExit:
317
+ ReleaseBSTR(bstrPackageId);
318
+
319
+ if (rgpPackages)
320
+ {
321
+ ::SafeArrayUnaccessData(psaPackages);
322
+ }
323
+
324
+ if (psaPackages)
325
+ {
326
+ // This will Release() all objects in the array.
327
+ ::SafeArrayDestroy(psaPackages);
328
+ }
329
+
330
+ ReleaseObject(pInstance2);
331
+ ReleaseBSTR(bstrPath);
332
+
333
+ return hr;
334
+}
335
+
336
+static HRESULT ProcessVS2017(
337
+ __in_opt ISetupInstance* pInstance,
338
+ __in DWORD64 qwVersion,
339
+ __in BOOL fComplete
340
+ )
341
+{
342
+ static ISetupInstance* pLatest = NULL;
343
+ static DWORD64 qwLatest = 0;
344
+
345
+ static LPCWSTR rgwzProducts[] =
346
+ {
347
+ L"Microsoft.VisualStudio.Product.Community",
348
+ L"Microsoft.VisualStudio.Product.Professional",
349
+ L"Microsoft.VisualStudio.Product.Enterprise",
350
+ };
351
+
352
+ // TODO: Consider making table-driven with these defaults per-version for easy customization.
353
+ static VS_COMPONENT_PROPERTY rgComponents[] =
354
+ {
355
+ { L"Microsoft.VisualStudio.Component.FSharp", L"VS2017_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" },
356
+ { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2017_IDE_VB_PROJECTSYSTEM_INSTALLED" },
357
+ { L"Microsoft.VisualStudio.Component.Roslyn.LanguageServices", L"VS2017_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" },
358
+ { L"Microsoft.VisualStudio.Component.TestTools.Core", L"VS2017_IDE_VSTS_TESTSYSTEM_INSTALLED" },
359
+ { L"Microsoft.VisualStudio.Component.VC.CoreIde", L"VS2017_IDE_VC_PROJECTSYSTEM_INSTALLED" },
360
+ { L"Microsoft.VisualStudio.Component.Web", L"VS2017_IDE_VWD_PROJECTSYSTEM_INSTALLED" },
361
+ { L"Microsoft.VisualStudio.PackageGroup.DslRuntime", L"VS2017_IDE_MODELING_PROJECTSYSTEM_INSTALLED" },
362
+ };
363
+
364
+ HRESULT hr = S_OK;
365
+
366
+ if (fComplete)
367
+ {
368
+ if (pLatest)
369
+ {
370
+ hr = ProcessInstance(pLatest, L"VS2017_ROOT_FOLDER", countof(rgComponents), rgComponents);
371
+ ExitOnFailure(hr, "Failed to process VS2017 instance.");
372
+ }
373
+ }
374
+ else if (pInstance)
375
+ {
376
+ hr = InstanceInProducts(pInstance, countof(rgwzProducts), rgwzProducts);
377
+ ExitOnFailure(hr, "Failed to compare product IDs.");
378
+
379
+ if (S_FALSE == hr)
380
+ {
381
+ ExitFunction();
382
+ }
383
+
384
+ hr = InstanceIsGreater(pLatest, qwLatest, pInstance, qwVersion);
385
+ ExitOnFailure(hr, "Failed to compare instances.");
386
+
387
+ if (S_FALSE == hr)
388
+ {
389
+ ExitFunction();
390
+ }
391
+
392
+ ReleaseNullObject(pLatest);
393
+
394
+ pLatest = pInstance;
395
+ qwLatest = qwVersion;
396
+
397
+ // Caller will do a final Release() otherwise.
398
+ pLatest->AddRef();
399
+ }
400
+
401
+LExit:
402
+ if (fComplete)
403
+ {
404
+ ReleaseObject(pLatest);
405
+ }
406
+
407
+ return hr;
408
+}
409
+
410
+static HRESULT SetPropertyForComponent(
411
+ __in DWORD cComponents,
412
+ __in VS_COMPONENT_PROPERTY* rgComponents,
413
+ __in LPCWSTR wzComponent
414
+ )
415
+{
416
+ HRESULT hr = S_OK;
417
+
418
+ // For small arrays, faster looping through than hashing. There may also be duplicates like with VS2017.
419
+ for (DWORD i = 0; i < cComponents; ++i)
420
+ {
421
+ const VS_COMPONENT_PROPERTY* pComponent = &rgComponents[i];
422
+
423
+ if (CSTR_EQUAL == ::CompareStringW(LOCALE_NEUTRAL, NORM_IGNORECASE, pComponent->pwzComponent, -1, wzComponent, -1))
424
+ {
425
+ hr = WcaSetIntProperty(pComponent->pwzProperty, 1);
426
+ ExitOnFailure(hr, "Failed to set property: %ls", pComponent->pwzProperty);
427
+ }
428
+ }
429
+
430
+LExit:
431
+ return hr;
432
+}
src/ca/vsca.def
new
+7
@@ -0,0 +1,7 @@
1
+; Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+
4
+LIBRARY "vsca"
5
+
6
+EXPORTS
7
+ FindInstances
src/ca/vsca.vcxproj
new
+69
@@ -0,0 +1,69 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5
+ <Import Project="..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" />
6
+ <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" />
7
+
8
+ <ItemGroup Label="ProjectConfigurations">
9
+ <ProjectConfiguration Include="Debug|Win32">
10
+ <Configuration>Debug</Configuration>
11
+ <Platform>Win32</Platform>
12
+ </ProjectConfiguration>
13
+ <ProjectConfiguration Include="Release|Win32">
14
+ <Configuration>Release</Configuration>
15
+ <Platform>Win32</Platform>
16
+ </ProjectConfiguration>
17
+ </ItemGroup>
18
+
19
+ <PropertyGroup Label="Globals">
20
+ <ProjectGuid>{45308B85-0628-4978-8FC8-6AD9E1AD5949}</ProjectGuid>
21
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
22
+ <TargetName>vsca</TargetName>
23
+ <PlatformToolset>v141</PlatformToolset>
24
+ <CharacterSet>Unicode</CharacterSet>
25
+ <ProjectModuleDefinitionFile>vsca.def</ProjectModuleDefinitionFile>
26
+ <Description>WiX Toolset VS CustomAction</Description>
27
+ </PropertyGroup>
28
+
29
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
30
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
31
+
32
+ <ImportGroup Label="ExtensionSettings">
33
+ </ImportGroup>
34
+
35
+ <ImportGroup Label="Shared">
36
+ <Import Project="..\..\packages\Microsoft.VisualStudio.Setup.Configuration.Native.1.14.114\build\native\Microsoft.VisualStudio.Setup.Configuration.Native.targets" Condition="Exists('..\..\packages\Microsoft.VisualStudio.Setup.Configuration.Native.1.14.114\build\native\Microsoft.VisualStudio.Setup.Configuration.Native.targets')" />
37
+ </ImportGroup>
38
+
39
+ <PropertyGroup>
40
+ <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries>
41
+ </PropertyGroup>
42
+
43
+ <ItemGroup>
44
+ <ClCompile Include="dllmain.cpp">
45
+ <PrecompiledHeader>Create</PrecompiledHeader>
46
+ </ClCompile>
47
+ <ClCompile Include="vsca.cpp" />
48
+ </ItemGroup>
49
+
50
+ <ItemGroup>
51
+ <ClInclude Include="precomp.h" />
52
+ </ItemGroup>
53
+
54
+ <ItemGroup>
55
+ <None Include="packages.config" />
56
+ <None Include="vsca.def" />
57
+ </ItemGroup>
58
+
59
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
60
+
61
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
62
+ <PropertyGroup>
63
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
64
+ </PropertyGroup>
65
+ <Error Condition="!Exists('..\..\packages\Microsoft.VisualStudio.Setup.Configuration.Native.1.14.114\build\native\Microsoft.VisualStudio.Setup.Configuration.Native.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Microsoft.VisualStudio.Setup.Configuration.Native.1.14.114\build\native\Microsoft.VisualStudio.Setup.Configuration.Native.targets'))" />
66
+ <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props'))" />
67
+ <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props'))" />
68
+ </Target>
69
+</Project>
src/wixext/Data/messages.xml
new
+133
@@ -0,0 +1,133 @@
1
+<?xml version='1.0' encoding='utf-8'?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Messages Namespace="WixToolset.Extensions" Resources="Data.Messages" xmlns="http://schemas.microsoft.com/genmsgs/2004/07/messages">
6
+ <Class Name="VSErrors" ContainerName="VSErrorEventArgs" BaseContainerName="MessageEventArgs">
7
+ <Message Id="InvalidOutputGroup" Number="5301" SourceLineNumbers="no">
8
+ <Instance>
9
+ Invalid project output group: {0}.
10
+ <Parameter Type="System.String" Name="outputGroup" />
11
+ </Instance>
12
+ </Message>
13
+ <Message Id="NoOutputGroupSpecified" Number="5302" SourceLineNumbers="no">
14
+ <Instance>
15
+ No project output group specified.
16
+ </Instance>
17
+ </Message>
18
+ <Message Id="CannotLoadMSBuildAssembly" Number="5303" SourceLineNumbers="no">
19
+ <Instance>
20
+ Failed to load MSBuild assembly: {0}
21
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
22
+ </Instance>
23
+ </Message>
24
+ <Message Id="CannotLoadMSBuildEngine" Number="5304" SourceLineNumbers="no">
25
+ <Instance>
26
+ Failed to load MSBuild engine: {0}
27
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
28
+ </Instance>
29
+ </Message>
30
+ <Message Id="CannotLoadProject" Number="5305" SourceLineNumbers="no">
31
+ <Instance>
32
+ Failed to load project {0}: {1}
33
+ <Parameter Type="System.String" Name="projectFile" />
34
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
35
+ </Instance>
36
+ </Message>
37
+ <Message Id="CannotBuildProject" Number="5306" SourceLineNumbers="no">
38
+ <Instance>
39
+ Failed to build project {0}: {1}
40
+ <Parameter Type="System.String" Name="projectFile" />
41
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
42
+ </Instance>
43
+ </Message>
44
+ <Message Id="BuildFailed" Number="5307" SourceLineNumbers="no">
45
+ <Instance>
46
+ Build failed.
47
+ </Instance>
48
+ </Message>
49
+ <Message Id="MissingProjectOutputGroup" Number="5308" SourceLineNumbers="no">
50
+ <Instance>
51
+ Missing project output group '{1}' in project {0}.
52
+ <Parameter Type="System.String" Name="projectFile" />
53
+ <Parameter Type="System.String" Name="outputGroup" />
54
+ </Instance>
55
+ </Message>
56
+ <Message Id="DirectoryAttributeAccessorBadType" Number="5309" SourceLineNumbers="no">
57
+ <Instance>
58
+ DirectoryAttributeAccessor tried to access an invalid element type for attribute '{0'}.
59
+ <Parameter Type="System.String" Name="attributeName" />
60
+ </Instance>
61
+ </Message>
62
+ <Message Id="InvalidOutputType" Number="5310" SourceLineNumbers="no">
63
+ <Instance>
64
+ Invalid generated type: {0}. Must be one of: components, container, payloadgroup, layout.
65
+ <Parameter Type="System.String" Name="generateType" />
66
+ </Instance>
67
+ </Message>
68
+ <Message Id="InvalidDirectoryId" Number="5311" SourceLineNumbers="no">
69
+ <Instance>
70
+ Invalid directory ID: {0}. Check that it doesn't start with a hyphen or slash.
71
+ <Parameter Type="System.String" Name="generateType" />
72
+ </Instance>
73
+ </Message>
74
+ <Message Id="InvalidProjectName" Number="5312" SourceLineNumbers="no">
75
+ <Instance>
76
+ Invalid project name: {0}. Check that it doesn't start with a hyphen or slash.
77
+ <Parameter Type="System.String" Name="generateType" />
78
+ </Instance>
79
+ </Message>
80
+ <Message Id="BuildErrorDuringHarvesting" Number="5313" SourceLineNumbers="no">
81
+ <Instance>
82
+ Build error during harvesting: {0}
83
+ <Parameter Type="System.String" Name="buildError" />
84
+ </Instance>
85
+ </Message>
86
+ <Message Id="CannotLoadMSBuildWrapperAssembly" Number="5314" SourceLineNumbers="no">
87
+ <Instance>
88
+ Failed to load MSBuild wrapper assembly: {0}
89
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
90
+ </Instance>
91
+ </Message>
92
+ <Message Id="CannotLoadMSBuildWrapperType" Number="5315" SourceLineNumbers="no">
93
+ <Instance>
94
+ Failed to load MSBuild wrapper type: {0}
95
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
96
+ </Instance>
97
+ </Message>
98
+ <Message Id="CannotLoadMSBuildWrapperObject" Number="5316" SourceLineNumbers="no">
99
+ <Instance>
100
+ Failed to load MSBuild wrapper object: {0}
101
+ <Parameter Type="System.String" Name="innerExceptionMessage" />
102
+ </Instance>
103
+ </Message>
104
+ </Class>
105
+ <Class Name="VSWarnings" ContainerName="VSWarningEventArgs" BaseContainerName="MessageEventArgs">
106
+ <Message Id="NoLogger" Number="5399" SourceLineNumbers="no">
107
+ <Instance>
108
+ Failed to set loggers: {0}
109
+ <Parameter Type="System.String" Name="exceptionMessage" />
110
+ </Instance>
111
+ </Message>
112
+ <Message Id="NoProjectConfiguration" Number="5398" SourceLineNumbers="no">
113
+ <Instance>
114
+ Failed to set project configuration and platform: {0}
115
+ <Parameter Type="System.String" Name="exceptionMessage" />
116
+ </Instance>
117
+ </Message>
118
+ </Class>
119
+ <Class Name="VSVerboses" ContainerName="VSVerboseEventArgs" BaseContainerName="MessageEventArgs">
120
+ <Message Id="FoundToolsVersion" Number="5379" SourceLineNumbers="no">
121
+ <Instance>
122
+ Found ToolsVersion {0} inside project file.
123
+ <Parameter Type="System.String" Name="toolsVersion" />
124
+ </Instance>
125
+ </Message>
126
+ <Message Id="LoadingProject" Number="5378" SourceLineNumbers="no">
127
+ <Instance>
128
+ Loading project using MSBuild version {0}.
129
+ <Parameter Type="System.String" Name="msbuildVersion" />
130
+ </Instance>
131
+ </Message>
132
+ </Class>
133
+</Messages>
src/wixext/Data/tables.xml
new
+66
@@ -0,0 +1,66 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
6
+ <tableDefinition name="HelpFile" createSymbols="yes">
7
+ <columnDefinition name="HelpFileKey" type="string" length="72" primaryKey="yes" modularize="column"
8
+ category="identifier" description="Primary Key for HelpFile Table (required)."/>
9
+ <columnDefinition name="HelpFileName" type="string" length="72"
10
+ category="text" description="Internal Microsoft Help ID for this HelpFile (required)."/>
11
+ <columnDefinition name="LangID" type="number" length="2" nullable="yes"
12
+ category="language" description="Language ID for content file (optional)."/>
13
+ <columnDefinition name="File_HxS" type="string" length="72" modularize="column"
14
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxS (Title) file (required)."/>
15
+ <columnDefinition name="File_HxI" type="string" length="72" nullable="yes" modularize="column"
16
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxI (Index) file (optional)."/>
17
+ <columnDefinition name="File_HxQ" type="string" length="72" nullable="yes" modularize="column"
18
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxQ (Query) file (optional)."/>
19
+ <columnDefinition name="File_HxR" type="string" length="72" nullable="yes" modularize="column"
20
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxR (Attributes) file (optional)."/>
21
+ <columnDefinition name="File_Samples" type="string" length="72" nullable="yes" modularize="column"
22
+ keyTable="File" keyColumn="1" category="identifier" description="Key for a file that is in the 'root' of the samples directory for this HelpFile (optional)."/>
23
+ </tableDefinition>
24
+ <tableDefinition name="HelpFileToNamespace">
25
+ <columnDefinition name="HelpFile_" type="string" length="72" primaryKey="yes" modularize="column"
26
+ keyTable="HelpFile" keyColumn="1" category="identifier" description="Foreign key into HelpFile table (required)."/>
27
+ <columnDefinition name="HelpNamespace_" type="string" length="72" primaryKey="yes"
28
+ keyTable="HelpNamespace" keyColumn="1" category="identifier" description="Foreign key into HelpNamespace table (required)."/>
29
+ </tableDefinition>
30
+ <tableDefinition name="HelpFilter" createSymbols="yes">
31
+ <columnDefinition name="FilterKey" type="string" length="72" primaryKey="yes" modularize="column"
32
+ category="identifier" description="Primary Key for HelpFilter (required)."/>
33
+ <columnDefinition name="Description" type="localized" length="0"
34
+ category="text" description="Friendly name for Filter (required)."/>
35
+ <columnDefinition name="QueryString" type="string" length="0" nullable="yes"
36
+ category="text" description="Query String for Help Filter (optional)."/>
37
+ </tableDefinition>
38
+ <tableDefinition name="HelpFilterToNamespace">
39
+ <columnDefinition name="HelpFilter_" type="string" length="72" primaryKey="yes" modularize="column"
40
+ keyTable="HelpFilter" keyColumn="1" category="identifier" description="Foreign key into HelpFilter table (required)."/>
41
+ <columnDefinition name="HelpNamespace_" type="string" length="72" primaryKey="yes"
42
+ keyTable="HelpNamespace" keyColumn="1" category="identifier" description="Foreign key into HelpNamespace table (required)."/>
43
+ </tableDefinition>
44
+ <tableDefinition name="HelpNamespace" createSymbols="yes">
45
+ <columnDefinition name="NamespaceKey" type="string" length="72" primaryKey="yes"
46
+ category="identifier" description="Primary Key for HelpNamespace (required)."/>
47
+ <columnDefinition name="NamespaceName" type="string" length="0"
48
+ category="text" description="Internal Microsoft Help ID for this Namespace (required)."/>
49
+ <columnDefinition name="File_Collection" type="string" length="72" modularize="column"
50
+ keyTable="File" keyColumn="1" category="text" description="Key for HxC (Collection) file (required)."/>
51
+ <columnDefinition name="Description" type="localized" length="0" nullable="yes"
52
+ category="text" description="Friendly name for Namespace (optional)."/>
53
+ </tableDefinition>
54
+ <tableDefinition name="HelpPlugin">
55
+ <columnDefinition name="HelpNamespace_" type="string" length="72" primaryKey="yes"
56
+ keyTable="HelpNamespace" keyColumn="1" category="identifier" description="Forein Key into HelpNamespace table for the child namespace that will be plugged into the parent namespace (required)."/>
57
+ <columnDefinition name="HelpNamespace_Parent" type="string" length="72" primaryKey="yes"
58
+ category="identifier" description="Forein Key into HelpNamespace table for the parent namespace into which the child will be inserted (required)."/>
59
+ <columnDefinition name="File_HxT" type="string" length="72" nullable="yes" modularize="column"
60
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxT file of child namespace (optional)."/>
61
+ <columnDefinition name="File_HxA" type="string" length="72" nullable="yes" modularize="column"
62
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxA (Attributes) file of child namespace (optional)."/>
63
+ <columnDefinition name="File_ParentHxT" type="string" length="72" nullable="yes" modularize="column"
64
+ keyTable="File" keyColumn="1" category="identifier" description="Key for HxT file of parent namespace that now includes the new child namespace (optional)."/>
65
+ </tableDefinition>
66
+</tableDefinitions>
src/wixext/VSCompiler.cs
new
+835
@@ -0,0 +1,835 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+namespace WixToolset.Extensions
4
+{
5
+ using System;
6
+ using System.Collections.Generic;
7
+ using System.Xml.Linq;
8
+ using WixToolset.Data;
9
+ using WixToolset.Extensibility;
10
+
11
+ /// <summary>
12
+ /// The compiler for the WiX Toolset Visual Studio Extension.
13
+ /// </summary>
14
+ public sealed class VSCompiler : CompilerExtension
15
+ {
16
+ internal const int MsidbCustomActionTypeExe = 0x00000002; // Target = command line args
17
+ internal const int MsidbCustomActionTypeProperty = 0x00000030; // Source = full path to executable
18
+ internal const int MsidbCustomActionTypeContinue = 0x00000040; // ignore action return status; continue running
19
+ internal const int MsidbCustomActionTypeRollback = 0x00000100; // in conjunction with InScript: queue in Rollback script
20
+ internal const int MsidbCustomActionTypeInScript = 0x00000400; // queue for execution within script
21
+ internal const int MsidbCustomActionTypeNoImpersonate = 0x00000800; // queue for not impersonating
22
+
23
+ /// <summary>
24
+ /// Instantiate a new HelpCompiler.
25
+ /// </summary>
26
+ public VSCompiler()
27
+ {
28
+ this.Namespace = "http://wixtoolset.org/schemas/v4/wxs/vs";
29
+ }
30
+
31
+ /// <summary>
32
+ /// Processes an element for the Compiler.
33
+ /// </summary>
34
+ /// <param name="sourceLineNumbers">Source line number for the parent element.</param>
35
+ /// <param name="parentElement">Parent element of element to process.</param>
36
+ /// <param name="element">Element to process.</param>
37
+ /// <param name="contextValues">Extra information about the context in which this element is being parsed.</param>
38
+ public override void ParseElement(XElement parentElement, XElement element, IDictionary<string, string> context)
39
+ {
40
+ switch (parentElement.Name.LocalName)
41
+ {
42
+ case "Component":
43
+ switch (element.Name.LocalName)
44
+ {
45
+ case "VsixPackage":
46
+ this.ParseVsixPackageElement(element, context["ComponentId"], null);
47
+ break;
48
+ default:
49
+ this.Core.UnexpectedElement(parentElement, element);
50
+ break;
51
+ }
52
+ break;
53
+ case "File":
54
+ switch (element.Name.LocalName)
55
+ {
56
+ case "HelpCollection":
57
+ this.ParseHelpCollectionElement(element, context["FileId"]);
58
+ break;
59
+ case "HelpFile":
60
+ this.ParseHelpFileElement(element, context["FileId"]);
61
+ break;
62
+ case "VsixPackage":
63
+ this.ParseVsixPackageElement(element, context["ComponentId"], context["FileId"]);
64
+ break;
65
+ default:
66
+ this.Core.UnexpectedElement(parentElement, element);
67
+ break;
68
+ }
69
+ break;
70
+ case "Fragment":
71
+ case "Module":
72
+ case "Product":
73
+ switch (element.Name.LocalName)
74
+ {
75
+ case "HelpCollectionRef":
76
+ this.ParseHelpCollectionRefElement(element);
77
+ break;
78
+ case "HelpFilter":
79
+ this.ParseHelpFilterElement(element);
80
+ break;
81
+ default:
82
+ this.Core.UnexpectedElement(parentElement, element);
83
+ break;
84
+ }
85
+ break;
86
+ default:
87
+ this.Core.UnexpectedElement(parentElement, element);
88
+ break;
89
+ }
90
+ }
91
+
92
+ /// <summary>
93
+ /// Parses a HelpCollectionRef element.
94
+ /// </summary>
95
+ /// <param name="node">Element to process.</param>
96
+ private void ParseHelpCollectionRefElement(XElement node)
97
+ {
98
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
99
+ string id = null;
100
+
101
+ foreach (XAttribute attrib in node.Attributes())
102
+ {
103
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
104
+ {
105
+ switch (attrib.Name.LocalName)
106
+ {
107
+ case "Id":
108
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
109
+ this.Core.CreateSimpleReference(sourceLineNumbers, "HelpNamespace", id);
110
+ break;
111
+ default:
112
+ this.Core.UnexpectedAttribute(node, attrib);
113
+ break;
114
+ }
115
+ }
116
+ else
117
+ {
118
+ this.Core.ParseExtensionAttribute(node, attrib);
119
+ }
120
+ }
121
+
122
+ if (null == id)
123
+ {
124
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
125
+ }
126
+
127
+ foreach (XElement child in node.Elements())
128
+ {
129
+ if (this.Namespace == child.Name.Namespace)
130
+ {
131
+ SourceLineNumber childSourceLineNumbers = Preprocessor.GetSourceLineNumbers(child);
132
+ switch (child.Name.LocalName)
133
+ {
134
+ case "HelpFileRef":
135
+ this.ParseHelpFileRefElement(child, id);
136
+ break;
137
+ default:
138
+ this.Core.UnexpectedElement(node, child);
139
+ break;
140
+ }
141
+ }
142
+ else
143
+ {
144
+ this.Core.ParseExtensionElement(node, child);
145
+ }
146
+ }
147
+ }
148
+
149
+ /// <summary>
150
+ /// Parses a HelpCollection element.
151
+ /// </summary>
152
+ /// <param name="node">Element to process.</param>
153
+ /// <param name="fileId">Identifier of the parent File element.</param>
154
+ private void ParseHelpCollectionElement(XElement node, string fileId)
155
+ {
156
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
157
+ string id = null;
158
+ string description = null;
159
+ string name = null;
160
+ YesNoType suppressCAs = YesNoType.No;
161
+
162
+ foreach (XAttribute attrib in node.Attributes())
163
+ {
164
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
165
+ {
166
+ switch (attrib.Name.LocalName)
167
+ {
168
+ case "Id":
169
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
170
+ break;
171
+ case "Description":
172
+ description = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
173
+ break;
174
+ case "Name":
175
+ name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
176
+ break;
177
+ case "SuppressCustomActions":
178
+ suppressCAs = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
179
+ break;
180
+ default:
181
+ this.Core.UnexpectedAttribute(node, attrib);
182
+ break;
183
+ }
184
+ }
185
+ else
186
+ {
187
+ this.Core.ParseExtensionAttribute(node, attrib);
188
+ }
189
+ }
190
+
191
+ if (null == id)
192
+ {
193
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
194
+ }
195
+
196
+ if (null == description)
197
+ {
198
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Description"));
199
+ }
200
+
201
+ if (null == name)
202
+ {
203
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
204
+ }
205
+
206
+ foreach (XElement child in node.Elements())
207
+ {
208
+ if (this.Namespace == child.Name.Namespace)
209
+ {
210
+ switch (child.Name.LocalName)
211
+ {
212
+ case "HelpFileRef":
213
+ this.ParseHelpFileRefElement(child, id);
214
+ break;
215
+ case "HelpFilterRef":
216
+ this.ParseHelpFilterRefElement(child, id);
217
+ break;
218
+ case "PlugCollectionInto":
219
+ this.ParsePlugCollectionIntoElement(child, id);
220
+ break;
221
+ default:
222
+ this.Core.UnexpectedElement(node, child);
223
+ break;
224
+ }
225
+ }
226
+ else
227
+ {
228
+ this.Core.ParseExtensionElement(node, child);
229
+ }
230
+ }
231
+
232
+ if (!this.Core.EncounteredError)
233
+ {
234
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpNamespace");
235
+ row[0] = id;
236
+ row[1] = name;
237
+ row[2] = fileId;
238
+ row[3] = description;
239
+
240
+ if (YesNoType.No == suppressCAs)
241
+ {
242
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8");
243
+ }
244
+ }
245
+ }
246
+
247
+ /// <summary>
248
+ /// Parses a HelpFile element.
249
+ /// </summary>
250
+ /// <param name="node">Element to process.</param>
251
+ /// <param name="fileId">Identifier of the parent file element.</param>
252
+ private void ParseHelpFileElement(XElement node, string fileId)
253
+ {
254
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
255
+ string id = null;
256
+ string name = null;
257
+ int language = CompilerConstants.IntegerNotSet;
258
+ string hxi = null;
259
+ string hxq = null;
260
+ string hxr = null;
261
+ string samples = null;
262
+ YesNoType suppressCAs = YesNoType.No;
263
+
264
+ foreach (XAttribute attrib in node.Attributes())
265
+ {
266
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
267
+ {
268
+ switch (attrib.Name.LocalName)
269
+ {
270
+ case "Id":
271
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
272
+ break;
273
+ case "AttributeIndex":
274
+ hxr = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
275
+ this.Core.CreateSimpleReference(sourceLineNumbers, "File", hxr);
276
+ break;
277
+ case "Index":
278
+ hxi = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
279
+ this.Core.CreateSimpleReference(sourceLineNumbers, "File", hxi);
280
+ break;
281
+ case "Language":
282
+ language = this.Core.GetAttributeIntegerValue(sourceLineNumbers, attrib, 0, short.MaxValue);
283
+ break;
284
+ case "Name":
285
+ name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
286
+ break;
287
+ case "SampleLocation":
288
+ samples = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
289
+ this.Core.CreateSimpleReference(sourceLineNumbers, "File", samples);
290
+ break;
291
+ case "Search":
292
+ hxq = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
293
+ this.Core.CreateSimpleReference(sourceLineNumbers, "File", hxq);
294
+ break;
295
+ case "SuppressCustomActions":
296
+ suppressCAs = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
297
+ break;
298
+ default:
299
+ this.Core.UnexpectedAttribute(node, attrib);
300
+ break;
301
+ }
302
+ }
303
+ else
304
+ {
305
+ this.Core.ParseExtensionAttribute(node, attrib);
306
+ }
307
+ }
308
+
309
+ if (null == id)
310
+ {
311
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
312
+ }
313
+
314
+ if (null == name)
315
+ {
316
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
317
+ }
318
+
319
+ //uninstall will always fail silently, leaving file registered, if Language is not set
320
+ if (CompilerConstants.IntegerNotSet == language)
321
+ {
322
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Language"));
323
+ }
324
+
325
+ this.Core.ParseForExtensionElements(node);
326
+
327
+ if (!this.Core.EncounteredError)
328
+ {
329
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpFile");
330
+ row[0] = id;
331
+ row[1] = name;
332
+ row[2] = language;
333
+ row[3] = fileId;
334
+ row[4] = hxi;
335
+ row[5] = hxq;
336
+ row[6] = hxr;
337
+ row[7] = samples;
338
+
339
+ if (YesNoType.No == suppressCAs)
340
+ {
341
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8");
342
+ }
343
+ }
344
+ }
345
+
346
+ /// <summary>
347
+ /// Parses a HelpFileRef element.
348
+ /// </summary>
349
+ /// <param name="node">Element to process.</param>
350
+ /// <param name="collectionId">Identifier of the parent help collection.</param>
351
+ private void ParseHelpFileRefElement(XElement node, string collectionId)
352
+ {
353
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
354
+ string id = null;
355
+
356
+ foreach (XAttribute attrib in node.Attributes())
357
+ {
358
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
359
+ {
360
+ switch (attrib.Name.LocalName)
361
+ {
362
+ case "Id":
363
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
364
+ this.Core.CreateSimpleReference(sourceLineNumbers, "HelpFile", id);
365
+ break;
366
+ default:
367
+ this.Core.UnexpectedAttribute(node, attrib);
368
+ break;
369
+ }
370
+ }
371
+ else
372
+ {
373
+ this.Core.ParseExtensionAttribute(node, attrib);
374
+ }
375
+ }
376
+
377
+ if (null == id)
378
+ {
379
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
380
+ }
381
+
382
+ this.Core.ParseForExtensionElements(node);
383
+
384
+ if (!this.Core.EncounteredError)
385
+ {
386
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpFileToNamespace");
387
+ row[0] = id;
388
+ row[1] = collectionId;
389
+ }
390
+ }
391
+
392
+ /// <summary>
393
+ /// Parses a HelpFilter element.
394
+ /// </summary>
395
+ /// <param name="node">Element to process.</param>
396
+ private void ParseHelpFilterElement(XElement node)
397
+ {
398
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
399
+ string id = null;
400
+ string filterDefinition = null;
401
+ string name = null;
402
+ YesNoType suppressCAs = YesNoType.No;
403
+
404
+ foreach (XAttribute attrib in node.Attributes())
405
+ {
406
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
407
+ {
408
+ switch (attrib.Name.LocalName)
409
+ {
410
+ case "Id":
411
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
412
+ break;
413
+ case "FilterDefinition":
414
+ filterDefinition = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
415
+ break;
416
+ case "Name":
417
+ name = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
418
+ break;
419
+ case "SuppressCustomActions":
420
+ suppressCAs = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
421
+ break;
422
+ default:
423
+ this.Core.UnexpectedAttribute(node, attrib);
424
+ break;
425
+ }
426
+ }
427
+ else
428
+ {
429
+ this.Core.ParseExtensionAttribute(node, attrib);
430
+ }
431
+ }
432
+
433
+ if (null == id)
434
+ {
435
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
436
+ }
437
+
438
+ if (null == name)
439
+ {
440
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Name"));
441
+ }
442
+
443
+ this.Core.ParseForExtensionElements(node);
444
+
445
+ if (!this.Core.EncounteredError)
446
+ {
447
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpFilter");
448
+ row[0] = id;
449
+ row[1] = name;
450
+ row[2] = filterDefinition;
451
+
452
+ if (YesNoType.No == suppressCAs)
453
+ {
454
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", "CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8");
455
+ }
456
+ }
457
+ }
458
+
459
+ /// <summary>
460
+ /// Parses a HelpFilterRef element.
461
+ /// </summary>
462
+ /// <param name="node">Element to process.</param>
463
+ /// <param name="collectionId">Identifier of the parent help collection.</param>
464
+ private void ParseHelpFilterRefElement(XElement node, string collectionId)
465
+ {
466
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
467
+ string id = null;
468
+
469
+ foreach (XAttribute attrib in node.Attributes())
470
+ {
471
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
472
+ {
473
+ switch (attrib.Name.LocalName)
474
+ {
475
+ case "Id":
476
+ id = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
477
+ this.Core.CreateSimpleReference(sourceLineNumbers, "HelpFilter", id);
478
+ break;
479
+ default:
480
+ this.Core.UnexpectedAttribute(node, attrib);
481
+ break;
482
+ }
483
+ }
484
+ else
485
+ {
486
+ this.Core.ParseExtensionAttribute(node, attrib);
487
+ }
488
+ }
489
+
490
+ if (null == id)
491
+ {
492
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Id"));
493
+ }
494
+
495
+ this.Core.ParseForExtensionElements(node);
496
+
497
+ if (!this.Core.EncounteredError)
498
+ {
499
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpFilterToNamespace");
500
+ row[0] = id;
501
+ row[1] = collectionId;
502
+ }
503
+ }
504
+
505
+ /// <summary>
506
+ /// Parses a PlugCollectionInto element.
507
+ /// </summary>
508
+ /// <param name="node">Element to process.</param>
509
+ /// <param name="parentId">Identifier of the parent help collection.</param>
510
+ private void ParsePlugCollectionIntoElement(XElement node, string parentId)
511
+ {
512
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
513
+ string hxa = null;
514
+ string hxt = null;
515
+ string hxtParent = null;
516
+ string namespaceParent = null;
517
+ string feature = null;
518
+ YesNoType suppressExternalNamespaces = YesNoType.No;
519
+ bool pluginVS05 = false;
520
+ bool pluginVS08 = false;
521
+
522
+ foreach (XAttribute attrib in node.Attributes())
523
+ {
524
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
525
+ {
526
+ switch (attrib.Name.LocalName)
527
+ {
528
+ case "Attributes":
529
+ hxa = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
530
+ break;
531
+ case "TableOfContents":
532
+ hxt = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
533
+ break;
534
+ case "TargetCollection":
535
+ namespaceParent = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
536
+ break;
537
+ case "TargetTableOfContents":
538
+ hxtParent = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
539
+ break;
540
+ case "TargetFeature":
541
+ feature = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
542
+ break;
543
+ case "SuppressExternalNamespaces":
544
+ suppressExternalNamespaces = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
545
+ break;
546
+ default:
547
+ this.Core.UnexpectedAttribute(node, attrib);
548
+ break;
549
+ }
550
+ }
551
+ else
552
+ {
553
+ this.Core.ParseExtensionAttribute(node, attrib);
554
+ }
555
+ }
556
+
557
+ pluginVS05 = namespaceParent.Equals("MS_VSIPCC_v80", StringComparison.Ordinal);
558
+ pluginVS08 = namespaceParent.Equals("MS.VSIPCC.v90", StringComparison.Ordinal);
559
+
560
+ if (null == namespaceParent)
561
+ {
562
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TargetCollection"));
563
+ }
564
+
565
+ if (null == feature && (pluginVS05 || pluginVS08) && YesNoType.No == suppressExternalNamespaces)
566
+ {
567
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TargetFeature"));
568
+ }
569
+
570
+ this.Core.ParseForExtensionElements(node);
571
+
572
+ if (!this.Core.EncounteredError)
573
+ {
574
+ Row row = this.Core.CreateRow(sourceLineNumbers, "HelpPlugin");
575
+ row[0] = parentId;
576
+ row[1] = namespaceParent;
577
+ row[2] = hxt;
578
+ row[3] = hxa;
579
+ row[4] = hxtParent;
580
+
581
+ if (pluginVS05)
582
+ {
583
+ if (YesNoType.No == suppressExternalNamespaces)
584
+ {
585
+ // Bring in the help 2 base namespace components for VS 2005
586
+ this.Core.CreateComplexReference(sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
587
+ ComplexReferenceChildType.ComponentGroup, "Help2_VS2005_Namespace_Components", false);
588
+ // Reference CustomAction since nothing will happen without it
589
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction",
590
+ "CA_HxMerge_VSIPCC_VSCC");
591
+ }
592
+ }
593
+ else if (pluginVS08)
594
+ {
595
+ if (YesNoType.No == suppressExternalNamespaces)
596
+ {
597
+ // Bring in the help 2 base namespace components for VS 2008
598
+ this.Core.CreateComplexReference(sourceLineNumbers, ComplexReferenceParentType.Feature, feature, String.Empty,
599
+ ComplexReferenceChildType.ComponentGroup, "Help2_VS2008_Namespace_Components", false);
600
+ // Reference CustomAction since nothing will happen without it
601
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction",
602
+ "CA_ScheduleExtHelpPlugin_VSCC_VSIPCC");
603
+ }
604
+ }
605
+ else
606
+ {
607
+ // Reference the parent namespace to enforce the foreign key relationship
608
+ this.Core.CreateSimpleReference(sourceLineNumbers, "HelpNamespace",
609
+ namespaceParent);
610
+ }
611
+ }
612
+ }
613
+
614
+ /// <summary>
615
+ /// Parses a VsixPackage element.
616
+ /// </summary>
617
+ /// <param name="node">Element to process.</param>
618
+ /// <param name="componentId">Identifier of the parent Component element.</param>
619
+ /// <param name="fileId">Identifier of the parent File element.</param>
620
+ private void ParseVsixPackageElement(XElement node, string componentId, string fileId)
621
+ {
622
+ SourceLineNumber sourceLineNumbers = Preprocessor.GetSourceLineNumbers(node);
623
+ string propertyId = "VS_VSIX_INSTALLER_PATH";
624
+ string packageId = null;
625
+ YesNoType permanent = YesNoType.NotSet;
626
+ string target = null;
627
+ string targetVersion = null;
628
+ YesNoType vital = YesNoType.NotSet;
629
+
630
+ foreach (XAttribute attrib in node.Attributes())
631
+ {
632
+ if (String.IsNullOrEmpty(attrib.Name.NamespaceName) || this.Namespace == attrib.Name.Namespace)
633
+ {
634
+ switch (attrib.Name.LocalName)
635
+ {
636
+ case "File":
637
+ if (String.IsNullOrEmpty(fileId))
638
+ {
639
+ fileId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
640
+ }
641
+ else
642
+ {
643
+ this.Core.OnMessage(WixErrors.IllegalAttributeWhenNested(sourceLineNumbers, node.Name.LocalName, "File", "File"));
644
+ }
645
+ break;
646
+ case "PackageId":
647
+ packageId = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
648
+ break;
649
+ case "Permanent":
650
+ permanent = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
651
+ break;
652
+ case "Target":
653
+ target = this.Core.GetAttributeValue(sourceLineNumbers, attrib);
654
+ switch (target.ToLowerInvariant())
655
+ {
656
+ case "integrated":
657
+ case "integratedshell":
658
+ target = "IntegratedShell";
659
+ break;
660
+ case "professional":
661
+ target = "Pro";
662
+ break;
663
+ case "premium":
664
+ target = "Premium";
665
+ break;
666
+ case "ultimate":
667
+ target = "Ultimate";
668
+ break;
669
+ case "vbexpress":
670
+ target = "VBExpress";
671
+ break;
672
+ case "vcexpress":
673
+ target = "VCExpress";
674
+ break;
675
+ case "vcsexpress":
676
+ target = "VCSExpress";
677
+ break;
678
+ case "vwdexpress":
679
+ target = "VWDExpress";
680
+ break;
681
+ }
682
+ break;
683
+ case "TargetVersion":
684
+ targetVersion = this.Core.GetAttributeVersionValue(sourceLineNumbers, attrib);
685
+ break;
686
+ case "Vital":
687
+ vital = this.Core.GetAttributeYesNoValue(sourceLineNumbers, attrib);
688
+ break;
689
+ case "VsixInstallerPathProperty":
690
+ propertyId = this.Core.GetAttributeIdentifierValue(sourceLineNumbers, attrib);
691
+ break;
692
+ default:
693
+ this.Core.UnexpectedAttribute(node, attrib);
694
+ break;
695
+ }
696
+ }
697
+ else
698
+ {
699
+ this.Core.ParseExtensionAttribute(node, attrib);
700
+ }
701
+ }
702
+
703
+ if (String.IsNullOrEmpty(fileId))
704
+ {
705
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "File"));
706
+ }
707
+
708
+ if (String.IsNullOrEmpty(packageId))
709
+ {
710
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "PackageId"));
711
+ }
712
+
713
+ if (!String.IsNullOrEmpty(target) && String.IsNullOrEmpty(targetVersion))
714
+ {
715
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "TargetVersion", "Target"));
716
+ }
717
+ else if (String.IsNullOrEmpty(target) && !String.IsNullOrEmpty(targetVersion))
718
+ {
719
+ this.Core.OnMessage(WixErrors.ExpectedAttribute(sourceLineNumbers, node.Name.LocalName, "Target", "TargetVersion"));
720
+ }
721
+
722
+ this.Core.ParseForExtensionElements(node);
723
+
724
+ if (!this.Core.EncounteredError)
725
+ {
726
+ // Ensure there is a reference to the AppSearch Property that will find the VsixInstaller.exe.
727
+ this.Core.CreateSimpleReference(sourceLineNumbers, "Property", propertyId);
728
+
729
+ // Ensure there is a reference to the package file (even if we are a child under it).
730
+ this.Core.CreateSimpleReference(sourceLineNumbers, "File", fileId);
731
+
732
+ string cmdlinePrefix = "/q ";
733
+
734
+ if (!String.IsNullOrEmpty(target))
735
+ {
736
+ cmdlinePrefix = String.Format("{0} /skuName:{1} /skuVersion:{2}", cmdlinePrefix, target, targetVersion);
737
+ }
738
+
739
+ string installAfter = "WriteRegistryValues"; // by default, come after the registry key registration.
740
+ int installExtraBits = VSCompiler.MsidbCustomActionTypeInScript;
741
+
742
+ // If the package is not vital, mark the install action as continue.
743
+ if (vital == YesNoType.No)
744
+ {
745
+ installExtraBits |= VSCompiler.MsidbCustomActionTypeContinue;
746
+ }
747
+ else // the package is vital so ensure there is a rollback action scheduled.
748
+ {
749
+ Identifier rollbackNamePerUser = this.Core.CreateIdentifier("vru", componentId, fileId, "per-user", target ?? String.Empty, targetVersion ?? String.Empty);
750
+ Identifier rollbackNamePerMachine = this.Core.CreateIdentifier("vrm", componentId, fileId, "per-machine", target ?? String.Empty, targetVersion ?? String.Empty);
751
+ string rollbackCmdLinePerUser = String.Concat(cmdlinePrefix, " /u:\"", packageId, "\"");
752
+ string rollbackCmdLinePerMachine = String.Concat(rollbackCmdLinePerUser, " /admin");
753
+ int rollbackExtraBitsPerUser = VSCompiler.MsidbCustomActionTypeContinue | VSCompiler.MsidbCustomActionTypeRollback | VSCompiler.MsidbCustomActionTypeInScript;
754
+ int rollbackExtraBitsPerMachine = rollbackExtraBitsPerUser | VSCompiler.MsidbCustomActionTypeNoImpersonate;
755
+ string rollbackConditionPerUser = String.Format("NOT ALLUSERS AND NOT Installed AND ${0}=2 AND ?{0}>2", componentId); // NOT Installed && Component being installed but not installed already.
756
+ string rollbackConditionPerMachine = String.Format("ALLUSERS AND NOT Installed AND ${0}=2 AND ?{0}>2", componentId); // NOT Installed && Component being installed but not installed already.
757
+
758
+ this.SchedulePropertyExeAction(sourceLineNumbers, rollbackNamePerUser, propertyId, rollbackCmdLinePerUser, rollbackExtraBitsPerUser, rollbackConditionPerUser, null, installAfter);
759
+ this.SchedulePropertyExeAction(sourceLineNumbers, rollbackNamePerMachine, propertyId, rollbackCmdLinePerMachine, rollbackExtraBitsPerMachine, rollbackConditionPerMachine, null, rollbackNamePerUser.Id);
760
+
761
+ installAfter = rollbackNamePerMachine.Id;
762
+ }
763
+
764
+ Identifier installNamePerUser = this.Core.CreateIdentifier("viu", componentId, fileId, "per-user", target ?? String.Empty, targetVersion ?? String.Empty);
765
+ Identifier installNamePerMachine = this.Core.CreateIdentifier("vim", componentId, fileId, "per-machine", target ?? String.Empty, targetVersion ?? String.Empty);
766
+ string installCmdLinePerUser = String.Format("{0} \"[#{1}]\"", cmdlinePrefix, fileId);
767
+ string installCmdLinePerMachine = String.Concat(installCmdLinePerUser, " /admin");
768
+ string installConditionPerUser = String.Format("NOT ALLUSERS AND ${0}=3", componentId); // only execute if the Component being installed.
769
+ string installConditionPerMachine = String.Format("ALLUSERS AND ${0}=3", componentId); // only execute if the Component being installed.
770
+
771
+ this.SchedulePropertyExeAction(sourceLineNumbers, installNamePerUser, propertyId, installCmdLinePerUser, installExtraBits, installConditionPerUser, null, installAfter);
772
+ this.SchedulePropertyExeAction(sourceLineNumbers, installNamePerMachine, propertyId, installCmdLinePerMachine, installExtraBits | VSCompiler.MsidbCustomActionTypeNoImpersonate, installConditionPerMachine, null, installNamePerUser.Id);
773
+
774
+ // If not permanent, schedule the uninstall custom action.
775
+ if (permanent != YesNoType.Yes)
776
+ {
777
+ Identifier uninstallNamePerUser = this.Core.CreateIdentifier("vuu", componentId, fileId, "per-user", target ?? String.Empty, targetVersion ?? String.Empty);
778
+ Identifier uninstallNamePerMachine = this.Core.CreateIdentifier("vum", componentId, fileId, "per-machine", target ?? String.Empty, targetVersion ?? String.Empty);
779
+ string uninstallCmdLinePerUser = String.Concat(cmdlinePrefix, " /u:\"", packageId, "\"");
780
+ string uninstallCmdLinePerMachine = String.Concat(uninstallCmdLinePerUser, " /admin");
781
+ int uninstallExtraBitsPerUser = VSCompiler.MsidbCustomActionTypeContinue | VSCompiler.MsidbCustomActionTypeInScript;
782
+ int uninstallExtraBitsPerMachine = uninstallExtraBitsPerUser | VSCompiler.MsidbCustomActionTypeNoImpersonate;
783
+ string uninstallConditionPerUser = String.Format("NOT ALLUSERS AND ${0}=2 AND ?{0}>2", componentId); // Only execute if component is being uninstalled.
784
+ string uninstallConditionPerMachine = String.Format("ALLUSERS AND ${0}=2 AND ?{0}>2", componentId); // Only execute if component is being uninstalled.
785
+
786
+ this.SchedulePropertyExeAction(sourceLineNumbers, uninstallNamePerUser, propertyId, uninstallCmdLinePerUser, uninstallExtraBitsPerUser, uninstallConditionPerUser, "InstallFinalize", null);
787
+ this.SchedulePropertyExeAction(sourceLineNumbers, uninstallNamePerMachine, propertyId, uninstallCmdLinePerMachine, uninstallExtraBitsPerMachine, uninstallConditionPerMachine, "InstallFinalize", null);
788
+ }
789
+ }
790
+ }
791
+
792
+ private void SchedulePropertyExeAction(SourceLineNumber sourceLineNumbers, Identifier name, string source, string cmdline, int extraBits, string condition, string beforeAction, string afterAction)
793
+ {
794
+ const string sequence = "InstallExecuteSequence";
795
+
796
+ Row actionRow = this.Core.CreateRow(sourceLineNumbers, "CustomAction", name);
797
+ actionRow[1] = VSCompiler.MsidbCustomActionTypeProperty | VSCompiler.MsidbCustomActionTypeExe | extraBits;
798
+ actionRow[2] = source;
799
+ actionRow[3] = cmdline;
800
+
801
+ Row sequenceRow = this.Core.CreateRow(sourceLineNumbers, "WixAction");
802
+ sequenceRow[0] = sequence;
803
+ sequenceRow[1] = name.Id;
804
+ sequenceRow[2] = condition;
805
+ // no explicit sequence
806
+ sequenceRow[4] = beforeAction;
807
+ sequenceRow[5] = afterAction;
808
+ sequenceRow[6] = 0; // not overridable
809
+
810
+ if (null != beforeAction)
811
+ {
812
+ if (WindowsInstallerStandard.IsStandardAction(beforeAction))
813
+ {
814
+ this.Core.CreateSimpleReference(sourceLineNumbers, "WixAction", sequence, beforeAction);
815
+ }
816
+ else
817
+ {
818
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", beforeAction);
819
+ }
820
+ }
821
+
822
+ if (null != afterAction)
823
+ {
824
+ if (WindowsInstallerStandard.IsStandardAction(afterAction))
825
+ {
826
+ this.Core.CreateSimpleReference(sourceLineNumbers, "WixAction", sequence, afterAction);
827
+ }
828
+ else
829
+ {
830
+ this.Core.CreateSimpleReference(sourceLineNumbers, "CustomAction", afterAction);
831
+ }
832
+ }
833
+ }
834
+ }
835
+}
src/wixext/VSDecompiler.cs
new
+296
@@ -0,0 +1,296 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+namespace WixToolset.Extensions
4
+{
5
+ using System;
6
+ using System.Collections;
7
+ using System.Diagnostics;
8
+ using System.Globalization;
9
+ using WixToolset.Data;
10
+ using WixToolset.Extensibility;
11
+ using VS = WixToolset.Extensions.Serialize.VS;
12
+ using Wix = WixToolset.Data.Serialize;
13
+
14
+ /// <summary>
15
+ /// The decompiler for the WiX Toolset Visual Studio Extension.
16
+ /// </summary>
17
+ public sealed class VSDecompiler : DecompilerExtension
18
+ {
19
+ /// <summary>
20
+ /// Creates a decompiler for VS Extension.
21
+ /// </summary>
22
+ public VSDecompiler()
23
+ {
24
+ this.TableDefinitions = VSExtensionData.GetExtensionTableDefinitions();
25
+ }
26
+
27
+ /// <summary>
28
+ /// Get the extensions library to be removed.
29
+ /// </summary>
30
+ /// <param name="tableDefinitions">Table definitions for library.</param>
31
+ /// <returns>Library to remove from decompiled output.</returns>
32
+ public override Library GetLibraryToRemove(TableDefinitionCollection tableDefinitions)
33
+ {
34
+ return VSExtensionData.GetExtensionLibrary(tableDefinitions);
35
+ }
36
+
37
+ /// <summary>
38
+ /// Decompiles an extension table.
39
+ /// </summary>
40
+ /// <param name="table">The table to decompile.</param>
41
+ public override void DecompileTable(Table table)
42
+ {
43
+ switch (table.Name)
44
+ {
45
+ case "HelpFile":
46
+ this.DecompileHelpFileTable(table);
47
+ break;
48
+ case "HelpFileToNamespace":
49
+ this.DecompileHelpFileToNamespaceTable(table);
50
+ break;
51
+ case "HelpFilter":
52
+ this.DecompileHelpFilterTable(table);
53
+ break;
54
+ case "HelpFilterToNamespace":
55
+ this.DecompileHelpFilterToNamespaceTable(table);
56
+ break;
57
+ case "HelpNamespace":
58
+ this.DecompileHelpNamespaceTable(table);
59
+ break;
60
+ case "HelpPlugin":
61
+ this.DecompileHelpPluginTable(table);
62
+ break;
63
+ default:
64
+ base.DecompileTable(table);
65
+ break;
66
+ }
67
+ }
68
+
69
+ /// <summary>
70
+ /// Decompile the HelpFile table.
71
+ /// </summary>
72
+ /// <param name="table">The table to decompile.</param>
73
+ private void DecompileHelpFileTable(Table table)
74
+ {
75
+ foreach (Row row in table.Rows)
76
+ {
77
+ VS.HelpFile helpFile = new VS.HelpFile();
78
+
79
+ helpFile.Id = (string)row[0];
80
+
81
+ helpFile.Name = (string)row[1];
82
+
83
+ if (null != row[2])
84
+ {
85
+ helpFile.Language = (int)row[2];
86
+ }
87
+
88
+ if (null != row[4])
89
+ {
90
+ helpFile.Index = (string)row[4];
91
+ }
92
+
93
+ if (null != row[5])
94
+ {
95
+ helpFile.Search = (string)row[5];
96
+ }
97
+
98
+ if (null != row[6])
99
+ {
100
+ helpFile.AttributeIndex = (string)row[6];
101
+ }
102
+
103
+ if (null != row[7])
104
+ {
105
+ helpFile.SampleLocation = (string)row[7];
106
+ }
107
+
108
+ if (this.Core.RootElement is Wix.Module)
109
+ {
110
+ helpFile.SuppressCustomActions = VS.YesNoType.yes;
111
+ }
112
+
113
+ Wix.File file = (Wix.File)this.Core.GetIndexedElement("File", (string)row[3]);
114
+ if (null != file)
115
+ {
116
+ file.AddChild(helpFile);
117
+ }
118
+ else
119
+ {
120
+ this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "File_HxS", (string)row[3], "File"));
121
+ }
122
+ }
123
+ }
124
+
125
+ /// <summary>
126
+ /// Decompile the HelpFileToNamespace table.
127
+ /// </summary>
128
+ /// <param name="table">The table to decompile.</param>
129
+ private void DecompileHelpFileToNamespaceTable(Table table)
130
+ {
131
+ foreach (Row row in table.Rows)
132
+ {
133
+ VS.HelpFileRef helpFileRef = new VS.HelpFileRef();
134
+
135
+ helpFileRef.Id = (string)row[0];
136
+
137
+ VS.HelpCollection helpCollection = (VS.HelpCollection)this.Core.GetIndexedElement("HelpNamespace", (string)row[1]);
138
+ if (null != helpCollection)
139
+ {
140
+ helpCollection.AddChild(helpFileRef);
141
+ }
142
+ else
143
+ {
144
+ this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "HelpNamespace_", (string)row[1], "HelpNamespace"));
145
+ }
146
+ }
147
+ }
148
+
149
+ /// <summary>
150
+ /// Decompile the HelpFilter table.
151
+ /// </summary>
152
+ /// <param name="table">The table to decompile.</param>
153
+ private void DecompileHelpFilterTable(Table table)
154
+ {
155
+ foreach (Row row in table.Rows)
156
+ {
157
+ VS.HelpFilter helpFilter = new VS.HelpFilter();
158
+
159
+ helpFilter.Id = (string)row[0];
160
+
161
+ helpFilter.Name = (string)row[1];
162
+
163
+ if (null != row[2])
164
+ {
165
+ helpFilter.FilterDefinition = (string)row[2];
166
+ }
167
+
168
+ if (this.Core.RootElement is Wix.Module)
169
+ {
170
+ helpFilter.SuppressCustomActions = VS.YesNoType.yes;
171
+ }
172
+
173
+ this.Core.RootElement.AddChild(helpFilter);
174
+ }
175
+ }
176
+
177
+ /// <summary>
178
+ /// Decompile the HelpFilterToNamespace table.
179
+ /// </summary>
180
+ /// <param name="table">The table to decompile.</param>
181
+ private void DecompileHelpFilterToNamespaceTable(Table table)
182
+ {
183
+ foreach (Row row in table.Rows)
184
+ {
185
+ VS.HelpFilterRef helpFilterRef = new VS.HelpFilterRef();
186
+
187
+ helpFilterRef.Id = (string)row[0];
188
+
189
+ VS.HelpCollection helpCollection = (VS.HelpCollection)this.Core.GetIndexedElement("HelpNamespace", (string)row[1]);
190
+ if (null != helpCollection)
191
+ {
192
+ helpCollection.AddChild(helpFilterRef);
193
+ }
194
+ else
195
+ {
196
+ this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "HelpNamespace_", (string)row[1], "HelpNamespace"));
197
+ }
198
+ }
199
+ }
200
+
201
+ /// <summary>
202
+ /// Decompile the HelpNamespace table.
203
+ /// </summary>
204
+ /// <param name="table">The table to decompile.</param>
205
+ private void DecompileHelpNamespaceTable(Table table)
206
+ {
207
+ foreach (Row row in table.Rows)
208
+ {
209
+ VS.HelpCollection helpCollection = new VS.HelpCollection();
210
+
211
+ helpCollection.Id = (string)row[0];
212
+
213
+ helpCollection.Name = (string)row[1];
214
+
215
+ if (null != row[3])
216
+ {
217
+ helpCollection.Description = (string)row[3];
218
+ }
219
+
220
+ if (this.Core.RootElement is Wix.Module)
221
+ {
222
+ helpCollection.SuppressCustomActions = VS.YesNoType.yes;
223
+ }
224
+
225
+ Wix.File file = (Wix.File)this.Core.GetIndexedElement("File", (string)row[2]);
226
+ if (null != file)
227
+ {
228
+ file.AddChild(helpCollection);
229
+ }
230
+ else if (0 != String.Compare(helpCollection.Id, "MS_VSIPCC_v80", StringComparison.Ordinal) &&
231
+ 0 != String.Compare(helpCollection.Id, "MS.VSIPCC.v90", StringComparison.Ordinal))
232
+ {
233
+ this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "File_Collection", (string)row[2], "File"));
234
+ }
235
+ this.Core.IndexElement(row, helpCollection);
236
+ }
237
+ }
238
+
239
+ /// <summary>
240
+ /// Decompile the HelpPlugin table.
241
+ /// </summary>
242
+ /// <param name="table">The table to decompile.</param>
243
+ private void DecompileHelpPluginTable(Table table)
244
+ {
245
+ foreach (Row row in table.Rows)
246
+ {
247
+ VS.PlugCollectionInto plugCollectionInto = new VS.PlugCollectionInto();
248
+
249
+ plugCollectionInto.TargetCollection = (string)row[1];
250
+
251
+ if (null != row[2])
252
+ {
253
+ plugCollectionInto.TableOfContents = (string)row[2];
254
+ }
255
+
256
+ if (null != row[3])
257
+ {
258
+ plugCollectionInto.Attributes = (string)row[3];
259
+ }
260
+
261
+ if (null != row[4])
262
+ {
263
+ plugCollectionInto.TargetTableOfContents = (string)row[4];
264
+ }
265
+
266
+ if (this.Core.RootElement is Wix.Module)
267
+ {
268
+ plugCollectionInto.SuppressExternalNamespaces = VS.YesNoType.yes;
269
+ }
270
+
271
+ //we cannot do this work because we cannot get the FeatureComponent table
272
+ //plugCollectionInto.TargetFeature = DecompileHelpComponents();
273
+
274
+ VS.HelpCollection helpCollection = (VS.HelpCollection)this.Core.GetIndexedElement("HelpNamespace", (string)row[0]);
275
+ if (null != helpCollection)
276
+ {
277
+ helpCollection.AddChild(plugCollectionInto);
278
+ }
279
+ else
280
+ {
281
+ this.Core.OnMessage(WixWarnings.ExpectedForeignRow(row.SourceLineNumbers, table.Name, row.GetPrimaryKey(DecompilerConstants.PrimaryKeyDelimiter), "HelpNamespace_", (string)row[0], "HelpNamespace"));
282
+ }
283
+ }
284
+ }
285
+ //private string DecompileHelpComponents()
286
+ //{
287
+ // throw new NotImplementedException();
288
+ // //Find both known compontents from FeatureComponents table and build feature list
289
+
290
+ // //remove components from FeatureComponents
291
+
292
+ // //return a space delimited list of features that mapped to our help components
293
+ // return String.Empty;
294
+ //}
295
+ }
296
+}
src/wixext/VSExtensionData.cs
new
+55
@@ -0,0 +1,55 @@
1
+// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
+
3
+namespace WixToolset.Extensions
4
+{
5
+ using System;
6
+ using System.Reflection;
7
+ using WixToolset.Data;
8
+ using WixToolset.Extensibility;
9
+
10
+ /// <summary>
11
+ /// The WiX Toolset Visual Studio Extension.
12
+ /// </summary>
13
+ public sealed class VSExtensionData : ExtensionData
14
+ {
15
+ /// <summary>
16
+ /// Gets the optional table definitions for this extension.
17
+ /// </summary>
18
+ /// <value>The optional table definitions for this extension.</value>
19
+ public override TableDefinitionCollection TableDefinitions
20
+ {
21
+ get
22
+ {
23
+ return VSExtensionData.GetExtensionTableDefinitions();
24
+ }
25
+ }
26
+
27
+ /// <summary>
28
+ /// Gets the library associated with this extension.
29
+ /// </summary>
30
+ /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
31
+ /// <returns>The loaded library.</returns>
32
+ public override Library GetLibrary(TableDefinitionCollection tableDefinitions)
33
+ {
34
+ return VSExtensionData.GetExtensionLibrary(tableDefinitions);
35
+ }
36
+
37
+ /// <summary>
38
+ /// Internal mechanism to access the extension's table definitions.
39
+ /// </summary>
40
+ /// <returns>Extension's table definitions.</returns>
41
+ internal static TableDefinitionCollection GetExtensionTableDefinitions()
42
+ {
43
+ return ExtensionData.LoadTableDefinitionHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.tables.xml");
44
+ }
45
+
46
+ /// <summary>
47
+ /// Internal mechanism to access the extension's library.
48
+ /// </summary>
49
+ /// <returns>Extension's library.</returns>
50
+ internal static Library GetExtensionLibrary(TableDefinitionCollection tableDefinitions)
51
+ {
52
+ return ExtensionData.LoadLibraryHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.vs.wixlib", tableDefinitions);
53
+ }
54
+ }
55
+}
src/wixext/WixToolset.VisualStudio.wixext.csproj
new
+69
@@ -0,0 +1,69 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project Sdk="Microsoft.NET.Sdk">
5
+ <PropertyGroup>
6
+ <TargetFramework>netstandard2.0</TargetFramework>
7
+ <RootNamespace>WixToolset.Extensions</RootNamespace>
8
+ <Description>WiX Toolset Visual Studio Extension</Description>
9
+ <Title>WiX Toolset VS Extension</Title>
10
+ <IsTool>true</IsTool>
11
+ <ContentTargetFolders>build</ContentTargetFolders>
12
+ </PropertyGroup>
13
+
14
+ <PropertyGroup>
15
+ <NoWarn>NU1701</NoWarn>
16
+ </PropertyGroup>
17
+
18
+ <ItemGroup>
19
+ <EmbeddedResource Include="Data\tables.xml">
20
+ <LogicalName>$(RootNamespace).Data.tables.xml</LogicalName>
21
+ </EmbeddedResource>
22
+
23
+ <MsgGenSource Include="Data\messages.xml">
24
+ <ResourcesLogicalName>$(RootNamespace).Data.Messages.resources</ResourcesLogicalName>
25
+ </MsgGenSource>
26
+
27
+ <EmbeddedResource Include="Xsd\vs.xsd">
28
+ <LogicalName>$(RootNamespace).Xsd.vs.xsd</LogicalName>
29
+ <Pack>true</Pack>
30
+ <PackagePath>tools</PackagePath>
31
+ </EmbeddedResource>
32
+
33
+ <XsdGenSource Include="Xsd\vs.xsd">
34
+ <CommonNamespace>WixToolset.Data.Serialize</CommonNamespace>
35
+ <Namespace>WixToolset.Extensions.Serialize.VS</Namespace>
36
+ </XsdGenSource>
37
+
38
+ <EmbeddedResource Include="$(OutputPath)..\vs.wixlib">
39
+ <Link>Data\vs.wixlib</Link>
40
+ </EmbeddedResource>
41
+ </ItemGroup>
42
+
43
+ <ItemGroup>
44
+ <Content Include="$(MSBuildThisFileName).targets" />
45
+ </ItemGroup>
46
+
47
+ <ItemGroup>
48
+ <ProjectReference Include="$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " />
49
+ <PackageReference Include="WixToolset.Data" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " PrivateAssets="all" />
50
+
51
+ <ProjectReference Include="$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " />
52
+ <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " PrivateAssets="all" />
53
+
54
+ <ProjectReference Include="$(WixToolsetRootFolder)\Core\src\WixToolset.Core\WixToolset.Core.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Core\src\WixToolset.Core\WixToolset.Core.csproj') " />
55
+ <PackageReference Include="WixToolset.Core" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Core\src\WixToolset.Core\WixToolset.Core.csproj') " PrivateAssets="all" />
56
+ </ItemGroup>
57
+
58
+ <ItemGroup>
59
+ <ProjectReference Include="..\wixlib\vs.wixproj">
60
+ <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
61
+ </ProjectReference>
62
+ </ItemGroup>
63
+
64
+ <ItemGroup>
65
+ <PackageReference Include="Nerdbank.GitVersioning" Version="2.0.41" PrivateAssets="all" />
66
+ <PackageReference Include="WixBuildTools.MsgGen" Version="4.0.*" PrivateAssets="all" />
67
+ <PackageReference Include="WixBuildTools.XsdGen" Version="4.0.*" PrivateAssets="all" />
68
+ </ItemGroup>
69
+</Project>
src/wixext/WixToolset.VisualStudio.wixext.targets
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
5
+ <ItemGroup>
6
+ <WixExtension Include="WixToolset.VS.wixext">
7
+ <HintPath>$(MSBuildThisFileDirectory)..\tools\WixToolset.VS.wixext.dll</HintPath>
8
+ </WixExtension>
9
+ </ItemGroup>
10
+</Project>
src/wixext/xsd/vs.xsd
new
+292
@@ -0,0 +1,292 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
6
+ xmlns:xse=" http://wixtoolset.org/schemas/XmlSchemaExtension"
7
+ targetNamespace="http://wixtoolset.org/schemas/v4/wxs/vs"
8
+ xmlns="http://wixtoolset.org/schemas/v4/wxs/vs">
9
+ <xs:annotation>
10
+ <xs:documentation>
11
+ The source code schema for the WiX Toolset Visual Studio Extension.
12
+ </xs:documentation>
13
+ </xs:annotation>
14
+
15
+ <xs:element name="HelpCollection">
16
+ <xs:annotation>
17
+ <xs:documentation>
18
+ Help Namespace for a help collection. The parent file is the key for the HxC (Collection) file.
19
+ </xs:documentation>
20
+ <xs:appinfo>
21
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="File" />
22
+ </xs:appinfo>
23
+ </xs:annotation>
24
+ <xs:complexType>
25
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
26
+ <xs:element ref="HelpFileRef" />
27
+ <xs:element ref="HelpFilterRef" />
28
+ <xs:element ref="PlugCollectionInto" />
29
+ </xs:choice>
30
+ <xs:attribute name="Id" type="xs:string" use="required">
31
+ <xs:annotation><xs:documentation>Primary Key for HelpNamespace.</xs:documentation></xs:annotation>
32
+ </xs:attribute>
33
+ <xs:attribute name="Description" type="xs:string">
34
+ <xs:annotation><xs:documentation>Friendly name for Namespace.</xs:documentation></xs:annotation>
35
+ </xs:attribute>
36
+ <xs:attribute name="Name" use="required" type="xs:string">
37
+ <xs:annotation><xs:documentation>Internal Microsoft Help ID for this Namespace.</xs:documentation></xs:annotation>
38
+ </xs:attribute>
39
+ <xs:attribute name="SuppressCustomActions" type="YesNoType">
40
+ <xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
41
+ </xs:attribute>
42
+ </xs:complexType>
43
+ </xs:element>
44
+
45
+ <xs:element name="HelpFilter">
46
+ <xs:annotation>
47
+ <xs:documentation>
48
+ Filter for Help Namespace.
49
+ </xs:documentation>
50
+ <xs:appinfo>
51
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
52
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
53
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
54
+ </xs:appinfo>
55
+ </xs:annotation>
56
+ <xs:complexType>
57
+ <xs:attribute name="Id" use="required" type="xs:string">
58
+ <xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
59
+ </xs:attribute>
60
+ <xs:attribute name="FilterDefinition" type="xs:string">
61
+ <xs:annotation><xs:documentation>Query String for Help Filter.</xs:documentation></xs:annotation>
62
+ </xs:attribute>
63
+ <xs:attribute name="Name" use="required" type="xs:string">
64
+ <xs:annotation><xs:documentation>Friendly name for Filter.</xs:documentation></xs:annotation>
65
+ </xs:attribute>
66
+ <xs:attribute name="SuppressCustomActions" type="YesNoType">
67
+ <xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
68
+ </xs:attribute>
69
+ </xs:complexType>
70
+ </xs:element>
71
+
72
+ <xs:element name="HelpFile">
73
+ <xs:annotation>
74
+ <xs:documentation>
75
+ File for Help Namespace. The parent file is the key for HxS (Title) file.
76
+ </xs:documentation>
77
+ <xs:appinfo>
78
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="File" />
79
+ </xs:appinfo>
80
+ </xs:annotation>
81
+ <xs:complexType>
82
+ <xs:attribute name="Id" use="required" type="xs:string">
83
+ <xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
84
+ </xs:attribute>
85
+ <xs:attribute name="AttributeIndex" type="xs:string">
86
+ <xs:annotation><xs:documentation>Key for HxR (Attributes) file.</xs:documentation></xs:annotation>
87
+ </xs:attribute>
88
+ <xs:attribute name="Index" type="xs:string">
89
+ <xs:annotation><xs:documentation>Key for HxI (Index) file.</xs:documentation></xs:annotation>
90
+ </xs:attribute>
91
+ <xs:attribute name="Language" use="required" type="xs:integer">
92
+ <xs:annotation><xs:documentation>Language ID for content file.</xs:documentation></xs:annotation>
93
+ </xs:attribute>
94
+ <xs:attribute name="Name" use="required" type="xs:string">
95
+ <xs:annotation><xs:documentation>Internal Microsoft Help ID for this HelpFile.</xs:documentation></xs:annotation>
96
+ </xs:attribute>
97
+ <xs:attribute name="SampleLocation" type="xs:string">
98
+ <xs:annotation><xs:documentation>Key for a file that is in the "root" of the samples directory for this HelpFile.</xs:documentation></xs:annotation>
99
+ </xs:attribute>
100
+ <xs:attribute name="Search" type="xs:string">
101
+ <xs:annotation><xs:documentation>Key for HxQ (Query) file.</xs:documentation></xs:annotation>
102
+ </xs:attribute>
103
+ <xs:attribute name="SuppressCustomActions" type="YesNoType">
104
+ <xs:annotation><xs:documentation>Suppress linking Help registration custom actions. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
105
+ </xs:attribute>
106
+ </xs:complexType>
107
+ </xs:element>
108
+
109
+ <xs:element name="PlugCollectionInto">
110
+ <xs:annotation><xs:documentation>Plugin for Help Namespace.</xs:documentation></xs:annotation>
111
+ <xs:complexType>
112
+ <xs:attribute name="Attributes" type="xs:string">
113
+ <xs:annotation><xs:documentation>Key for HxA (Attributes) file of child namespace.</xs:documentation></xs:annotation>
114
+ </xs:attribute>
115
+ <xs:attribute name="TableOfContents" type="xs:string">
116
+ <xs:annotation><xs:documentation>Key for HxT file of child namespace.</xs:documentation></xs:annotation>
117
+ </xs:attribute>
118
+ <xs:attribute name="TargetCollection" use="required" type="xs:string">
119
+ <xs:annotation><xs:documentation>
120
+ Foriegn Key into HelpNamespace table for the parent namespace into which the child will be inserted.
121
+ The following special keys can be used to plug into external namespaces defined outside of the installer.
122
+ MS_VSIPCC_v80 : Visual Studio 2005
123
+ MS.VSIPCC.v90 : Visual Studio 2008
124
+ </xs:documentation></xs:annotation>
125
+ </xs:attribute>
126
+ <xs:attribute name="TargetTableOfContents" type="xs:string">
127
+ <xs:annotation><xs:documentation>Key for HxT file of parent namespace that now includes the new child namespace.</xs:documentation></xs:annotation>
128
+ </xs:attribute>
129
+ <xs:attribute name="TargetFeature" type="xs:string">
130
+ <xs:annotation><xs:documentation>Key for the feature parent of this help collection. Required only when plugging into external namespaces.</xs:documentation></xs:annotation>
131
+ </xs:attribute>
132
+ <xs:attribute name="SuppressExternalNamespaces" type="YesNoType">
133
+ <xs:annotation><xs:documentation>Suppress linking Visual Studio Help namespaces. Help redistributable merge modules will be required. Use this when building a merge module.</xs:documentation></xs:annotation>
134
+ </xs:attribute>
135
+ </xs:complexType>
136
+ </xs:element>
137
+
138
+ <xs:element name="HelpFileRef">
139
+ <xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
140
+ <xs:complexType>
141
+ <xs:attribute name="Id" use="required" type="xs:string">
142
+ <xs:annotation><xs:documentation>Primary Key for HelpFile Table.</xs:documentation></xs:annotation>
143
+ </xs:attribute>
144
+ <xs:anyAttribute namespace="##other" processContents="lax">
145
+ <xs:annotation><xs:documentation>
146
+ Extensibility point in the WiX XML Schema. Schema extensions can register additional
147
+ attributes at this point in the schema.
148
+ </xs:documentation></xs:annotation>
149
+ </xs:anyAttribute>
150
+ </xs:complexType>
151
+ </xs:element>
152
+
153
+ <xs:element name="HelpFilterRef">
154
+ <xs:annotation><xs:documentation>Create a reference to a HelpFile element in another Fragment.</xs:documentation></xs:annotation>
155
+ <xs:complexType>
156
+ <xs:attribute name="Id" use="required" type="xs:string">
157
+ <xs:annotation><xs:documentation>Primary Key for HelpFilter.</xs:documentation></xs:annotation>
158
+ </xs:attribute>
159
+ <xs:anyAttribute namespace="##other" processContents="lax">
160
+ <xs:annotation><xs:documentation>
161
+ Extensibility point in the WiX XML Schema. Schema extensions can register additional
162
+ attributes at this point in the schema.
163
+ </xs:documentation></xs:annotation>
164
+ </xs:anyAttribute>
165
+ </xs:complexType>
166
+ </xs:element>
167
+
168
+ <xs:element name="HelpCollectionRef">
169
+ <xs:annotation>
170
+ <xs:documentation>Create a reference to a HelpCollection element in another Fragment.</xs:documentation>
171
+ <xs:appinfo>
172
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Fragment" />
173
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Module" />
174
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Product" />
175
+ </xs:appinfo>
176
+ </xs:annotation>
177
+ <xs:complexType>
178
+ <xs:choice minOccurs="0" maxOccurs="unbounded">
179
+ <xs:element ref="HelpFileRef" />
180
+ </xs:choice>
181
+ <xs:attribute name="Id" use="required" type="xs:string">
182
+ <xs:annotation><xs:documentation>Primary Key for HelpNamespace Table.</xs:documentation></xs:annotation>
183
+ </xs:attribute>
184
+ <xs:anyAttribute namespace="##other" processContents="lax">
185
+ <xs:annotation><xs:documentation>
186
+ Extensibility point in the WiX XML Schema. Schema extensions can register additional
187
+ attributes at this point in the schema.
188
+ </xs:documentation></xs:annotation>
189
+ </xs:anyAttribute>
190
+ </xs:complexType>
191
+ </xs:element>
192
+
193
+ <xs:element name="VsixPackage">
194
+ <xs:annotation>
195
+ <xs:documentation>
196
+ This element provides the metdata required to install/uninstall a file as
197
+ a VSIX Package. The VSIX package file will be installed as part of the MSI
198
+ then passed to the VSIX installer to install the VSIX package. To avoid the
199
+ duplication, simply use the MSI to install the VSIX package itself.
200
+ </xs:documentation>
201
+ <xs:appinfo>
202
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="Component" />
203
+ <xse:parent namespace="http://wixtoolset.org/schemas/v4/wxs" ref="File" />
204
+ </xs:appinfo>
205
+ </xs:annotation>
206
+ <xs:complexType>
207
+ <xs:attribute name="File" type="xs:string">
208
+ <xs:annotation>
209
+ <xs:documentation>
210
+ Reference to file identifer. This attribute is required when the element is not a
211
+ child of a File element and is invalid when the element is a child of the File element.
212
+ </xs:documentation>
213
+ </xs:annotation>
214
+ </xs:attribute>
215
+ <xs:attribute name="PackageId" type="xs:string" use="required">
216
+ <xs:annotation>
217
+ <xs:documentation>
218
+ Identity of the VSIX package per its internal manifest. If this value is not correct
219
+ the VSIX package will not correctly uninstall.
220
+ </xs:documentation>
221
+ </xs:annotation>
222
+ </xs:attribute>
223
+ <xs:attribute name="Permanent" type="YesNoType">
224
+ <xs:annotation>
225
+ <xs:documentation>
226
+ Indicates whether the VSIX package is uninstalled when the parent Component is uninstalled.
227
+ The default is 'no'.
228
+ </xs:documentation>
229
+ </xs:annotation>
230
+ </xs:attribute>
231
+ <xs:attribute name="Target" type="xs:string">
232
+ <xs:annotation>
233
+ <xs:documentation>
234
+ Specifies the SKU of Visual Studio in which to register the extension. If no target
235
+ is specified the extension is registered with all installed SKUs. If the Target
236
+ attribute is specified the TargetVersion attribute must also be specified. The
237
+ following is a list of known Visual Studio targets: integratedShell, professional,
238
+ premium, ultimate, vbExpress, vcExpress, vcsExpress, vwdExpress
239
+ </xs:documentation>
240
+ </xs:annotation>
241
+ </xs:attribute>
242
+ <xs:attribute name="TargetVersion" type="VersionType">
243
+ <xs:annotation>
244
+ <xs:documentation>
245
+ Specifies the version of Visual Studio in which to register the extension. This attribute
246
+ is required if the Target attribute is specified.
247
+ </xs:documentation>
248
+ </xs:annotation>
249
+ </xs:attribute>
250
+ <xs:attribute name="Vital" type="YesNoType">
251
+ <xs:annotation>
252
+ <xs:documentation>
253
+ Indicates whether failure to install the VSIX package causes the installation to rollback.
254
+ The default is 'yes'.
255
+ </xs:documentation>
256
+ </xs:annotation>
257
+ </xs:attribute>
258
+ <xs:attribute name="VsixInstallerPathProperty" type="xs:string">
259
+ <xs:annotation>
260
+ <xs:documentation>
261
+ Optional reference to a Property element that contains the path to the VsixInstaller.exe.
262
+ By default, the latest VsixInstaller.exe on the machine will be used to install the VSIX
263
+ package. It is highly recommended that this attribute is *not* used.
264
+ </xs:documentation>
265
+ </xs:annotation>
266
+ </xs:attribute>
267
+ <xs:anyAttribute namespace="##other" processContents="lax">
268
+ <xs:annotation><xs:documentation>
269
+ Extensibility point in the WiX XML Schema. Schema extensions can register additional
270
+ attributes at this point in the schema.
271
+ </xs:documentation></xs:annotation>
272
+ </xs:anyAttribute>
273
+ </xs:complexType>
274
+ </xs:element>
275
+
276
+ <xs:simpleType name="VersionType">
277
+ <xs:annotation><xs:documentation>Values of this type will look like: "x.x.x.x" where x is an integer from 0 to 65534.</xs:documentation></xs:annotation>
278
+ <xs:restriction base="xs:string">
279
+ <xs:pattern value="(\d{1,5}\.){0,3}\d{1,5}"/>
280
+ </xs:restriction>
281
+ </xs:simpleType>
282
+
283
+ <xs:simpleType name="YesNoType">
284
+ <xs:annotation>
285
+ <xs:documentation>Values of this type will either be "yes" or "no".</xs:documentation>
286
+ </xs:annotation>
287
+ <xs:restriction base='xs:NMTOKEN'>
288
+ <xs:enumeration value="no"/>
289
+ <xs:enumeration value="yes"/>
290
+ </xs:restriction>
291
+ </xs:simpleType>
292
+</xs:schema>
src/wixlib/HTML_Help_Registration__RTL_X86.wxs
new
+68
@@ -0,0 +1,68 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <Fragment>
6
+ <DirectoryRef Id="CommonFilesFolder">
7
+ <Directory Id="MSShared" Name="Microsoft Shared">
8
+ <Directory Id="DevHelp" Name="DevHelp">
9
+ <Directory Id="VSIPCC" Name="VSIPCC">
10
+ </Directory>
11
+ </Directory>
12
+ </Directory>
13
+ </DirectoryRef>
14
+ </Fragment>
15
+
16
+ <Fragment Id="HTML_Help_Registration_">
17
+ <Binary Id="BIN_File_46002" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_46002.dll" />
18
+ <Binary Id="BIN_File_46001" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_46001.dll" />
19
+ <Binary Id="BIN_File_107602" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_107602.dll" />
20
+ <!-- We are stuck using GUID'ed ids here because they were hardcoded in the Help2 dlls-->
21
+ <CustomAction Id="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="BeginTransaction" Execute="deferred" Impersonate="no" />
22
+ <CustomAction Id="CA_RegisterPlugIn.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RegisterPlugIn2" Execute="deferred" Impersonate="no" />
23
+ <CustomAction Id="CA_CommitHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="CommitTransaction" Return="ignore" Execute="commit" Impersonate="no" />
24
+ <CustomAction Id="CA_CommitHelpTransactionNoRB.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="CommitTransaction" Return="ignore" Execute="deferred" Impersonate="no" />
25
+ <CustomAction Id="CA_ExportTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46002" DllEntry="ExportTempHxDs" />
26
+ <CustomAction Id="CA_RegisterNamespace.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RegisterNamespace2" Execute="deferred" Impersonate="no" />
27
+ <CustomAction Id="CA_RollbackTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RemoveTempHxDs" Execute="rollback" Impersonate="no" />
28
+ <CustomAction Id="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46002" DllEntry="RegisterMicrosoftHelp" Return="ignore" />
29
+ <CustomAction Id="CA_RegisterHelpFile.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RegisterHelpFile" Execute="deferred" Impersonate="no" />
30
+ <CustomAction Id="CA_RegisterFilter.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RegisterFilter2" Execute="deferred" Impersonate="no" />
31
+ <CustomAction Id="CA_RemoveNamespace.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RemoveNamespace" Execute="deferred" Impersonate="no" />
32
+ <CustomAction Id="CA_RemoveTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RemoveTempHxDs" Return="ignore" />
33
+ <!-- This isn't actually executed, but the Help2 dlls use it to find the key for the binary file-->
34
+ <CustomAction Id="CA_DummyForHXDS_DLL.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_107602" DllEntry="Bogus" />
35
+ <CustomAction Id="CA_RollbackHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RollbackTransaction" Execute="rollback" Impersonate="no" />
36
+ <CustomAction Id="CA_RemoveHelpFile.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46001" DllEntry="RemoveHelpFile" Execute="deferred" Impersonate="no" />
37
+ <CustomAction Id="CA_UnRegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" BinaryKey="BIN_File_46002" DllEntry="UnRegisterMicrosoftHelp" Return="ignore" />
38
+
39
+ <InstallExecuteSequence>
40
+ <Custom Action="CA_ExportTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" Before="ProcessComponents" />
41
+
42
+ <Custom Action="CA_RollbackHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" Before="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" />
43
+ <Custom Action="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" After="RemoveFiles" />
44
+ <Custom Action="CA_UnRegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" After="CA_BeginHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" />
45
+
46
+ <Custom Action="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8" After="InstallFiles" />
47
+
48
+ <Custom Action="CA_CommitHelpTransaction.3643236F_FC70_11D3_A536_0090278A1BB8" Before="InstallFinalize">( NOT RollbackDisabled )</Custom>
49
+ <Custom Action="CA_CommitHelpTransactionNoRB.3643236F_FC70_11D3_A536_0090278A1BB8" Before="InstallFinalize">( RollbackDisabled )</Custom>
50
+ <Custom Action="CA_RemoveTempHxDs.3643236F_FC70_11D3_A536_0090278A1BB8" After="InstallFinalize" />
51
+ </InstallExecuteSequence>
52
+
53
+ <CustomTable Id="HelpPlugin">
54
+ <Column Id="HelpNamespace_" Type="string" Width="72" PrimaryKey="yes" />
55
+ <Column Id="HelpNamespace_Parent" Type="string" Width="72" PrimaryKey="yes" />
56
+ <Column Id="File_HxT" Nullable="yes" Type="string" Width="72" />
57
+ <Column Id="File_HxA" Nullable="yes" Type="string" Width="72" />
58
+ <Column Id="File_ParentHxT" Nullable="yes" Type="string" Width="72" />
59
+ </CustomTable>
60
+
61
+ <CustomTable Id="HelpNamespace">
62
+ <Column Id="NamespaceKey" Type="string" Width="72" PrimaryKey="yes" />
63
+ <Column Id="NamespaceName" Type="string" Width="0" />
64
+ <Column Id="File_Collection" Type="string" Width="72" />
65
+ <Column Id="Description" Nullable="yes" Localizable="yes" Type="string" Width="0" />
66
+ </CustomTable>
67
+ </Fragment>
68
+</Wix>
src/wixlib/Redist/BIN_File_107602.dll
Binary files /dev/null and b/src/wixlib/Redist/BIN_File_107602.dll differ
src/wixlib/Redist/BIN_File_46001.dll
Binary files /dev/null and b/src/wixlib/Redist/BIN_File_46001.dll differ
src/wixlib/Redist/BIN_File_46002.dll
Binary files /dev/null and b/src/wixlib/Redist/BIN_File_46002.dll differ
src/wixlib/VS11.wxs
new
+206
@@ -0,0 +1,206 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS11_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS11DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS11ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS11_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS11DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS11ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS11_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS11ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="11.0" Type="raw">
25
+ <DirectorySearch Id="VS11XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS11XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS11_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS11DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS11ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS11_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVs11BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\4.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS11_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS11RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="11.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS11DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS11DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS11Setup" Property="VS11DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS11DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS11Setup" Before="InstallFinalize" Overridable="yes">VS11DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS11InstallVSTemplates" Property="VS11DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS11DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS11InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS11DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
77
+ <!-- Visual Studio 11 standard or higher. If this property is set, that -->
78
+ <!-- means Visual Studio 11 standard or higher is installed and the Visual -->
79
+ <!-- C# language tools were installed as a part of VS 11 setup. -->
80
+ <Fragment>
81
+ <Property Id="VS11_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
82
+ <RegistrySearch Id="SearchForVCS11ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VC#" Name="ProductDir" Type="raw" />
83
+ </Property>
84
+ </Fragment>
85
+
86
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
87
+ <!-- Visual Studio 11 standard or higher. If this property is set, that -->
88
+ <!-- means Visual Studio 11 standard or higher is installed and the Visual -->
89
+ <!-- Basic language tools were installed as a part of VS 11 setup. -->
90
+ <Fragment>
91
+ <Property Id="VS11_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
92
+ <RegistrySearch Id="SearchForVB11ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VB" Name="ProductDir" Type="raw" />
93
+ </Property>
94
+ </Fragment>
95
+
96
+ <!-- Indicates whether the Visual Web Developer 11 Express IDE component is installed. -->
97
+ <!-- If this property is set, that means Visual Web Developer 11 Express Edition is -->
98
+ <!-- installed on the system. -->
99
+ <Fragment>
100
+ <Property Id="VWD11EXPRESS_IDE" Secure="yes">
101
+ <ComponentSearch Id="SearchForVwdExpressIde11Component" Guid="92A0CBA0-BF39-422D-87FA-AB64564CD136" Type="file">
102
+ <FileSearch Id="VwdExpressIde11" Name="vwdexpress.exe" />
103
+ </ComponentSearch>
104
+ </Property>
105
+ </Fragment>
106
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
107
+ <Fragment>
108
+ <CustomAction Id="VWD11Setup" Property="VWD11EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
109
+ <PropertyRef Id="VWD11EXPRESS_IDE" />
110
+ <InstallExecuteSequence>
111
+ <Custom Action="VWD11Setup" Before="InstallFinalize" Overridable="yes">VWD11EXPRESS_IDE</Custom>
112
+ </InstallExecuteSequence>
113
+ </Fragment>
114
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
115
+ <Fragment>
116
+ <CustomAction Id="VWD11InstallVSTemplates" Property="VWD11EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
117
+ <PropertyRef Id="VWD11EXPRESS_IDE" />
118
+ <InstallExecuteSequence>
119
+ <Custom Action="VWD11InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD11EXPRESS_IDE</Custom>
120
+ </InstallExecuteSequence>
121
+ </Fragment>
122
+
123
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
124
+ <!-- Visual Studio 11 standard or higher. If this property is set, that -->
125
+ <!-- means Visual Studio 11 standard or higher is installed and the Visual -->
126
+ <!-- Web Developer language tools were installed as a part of VS 11 setup. -->
127
+ <Fragment>
128
+ <Property Id="VS11_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
129
+ <ComponentSearch Id="SearchForVWD11ProjectSystemUnderVSSetup" Guid="03E73DF8-BED3-44BB-BE2E-BAC10FAE723E" />
130
+ <ComponentSearch Id="SearchForVWD11ProjectSystemUnderVWDSetup" Guid="3D7D4A9F-E3D7-4F13-9907-AF4F3CD75D33" Type="directory" />
131
+ </Property>
132
+ </Fragment>
133
+
134
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
135
+ <!-- Visual Studio 11 standard or higher. If this property is set, that -->
136
+ <!-- means Visual Studio 11 standard or higher is installed and the Visual -->
137
+ <!-- C++ language tools were installed as a part of VS 11 setup. -->
138
+ <Fragment>
139
+ <Property Id="VS11_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
140
+ <RegistrySearch Id="SearchForVC11ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VC" Name="ProductDir" Type="raw" />
141
+ </Property>
142
+ </Fragment>
143
+
144
+ <!-- Indicates whether the Visual Studio 11 Team Test project system is installed -->
145
+ <Fragment>
146
+ <Property Id="VS11_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
147
+ <RegistrySearch Id="SearchForVSTS11TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
148
+ </Property>
149
+ </Fragment>
150
+
151
+ <!-- Indicates whether the Visual Studio 11 Database project system is installed -->
152
+ <Fragment>
153
+ <Property Id="VS11_IDE_DB_PROJECTSYSTEM_INSTALLED" Secure="yes">
154
+ <ComponentSearch Id="SearchForVS11DBSystemUnderVSSetup" Guid="E781FFA7-55F5-4E8C-9275-7B7EF035B13B" />
155
+ </Property>
156
+ </Fragment>
157
+
158
+ <!-- Indicates whether the WiX project system is installed for VS11 -->
159
+ <Fragment>
160
+ <Property Id="VS11_IDE_WIX_PROJECTSYSTEM_INSTALLED" Secure="yes">
161
+ <!-- Component search for the .pkgdef file for VS11 -->
162
+ <ComponentSearch Id="SearchForVS11WixSystemUnderVSSetup" Guid="55489E7A-7DCA-5228-975E-39C51BE332D9" />
163
+ </Property>
164
+ </Fragment>
165
+
166
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
167
+ <Fragment>
168
+ <Property Id="VS11_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
169
+ <RegistrySearch Id="SearchForVSTS11ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
170
+ </Property>
171
+ </Fragment>
172
+
173
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
174
+ <Fragment>
175
+ <Property Id="VS11_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
176
+ <RegistrySearch Id="SearchForVSTS11FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\F#" Name="ProductDir" Type="raw" />
177
+ </Property>
178
+ </Fragment>
179
+
180
+ <!-- Indicates whether the Visual Studio Express for Windows IDE component is installed. -->
181
+ <!-- If this property is set, that means Visual Studio Express for Windows is installed -->
182
+ <!-- on the system. -->
183
+ <Fragment>
184
+ <Property Id="VS11WINEXPRESS_IDE" Secure="yes">
185
+ <ComponentSearch Id="SearchForVS11WinExpressIdeComponent" Guid="A7A5FD99-1DFE-4AA8-A563-4DF5E0DD89E1" Type="file">
186
+ <FileSearch Id="VS11WinExpressIde" Name="vswinexpress.exe" />
187
+ </ComponentSearch>
188
+ </Property>
189
+ </Fragment>
190
+ <!-- Custom action definition to run vswinexpress.exe /setup -->
191
+ <Fragment>
192
+ <CustomAction Id="VS11WinExpressSetup" Property="VS11WINEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
193
+ <PropertyRef Id="VS11WINEXPRESS_IDE" />
194
+ <InstallExecuteSequence>
195
+ <Custom Action="VS11WinExpressSetup" Before="InstallFinalize" Overridable="yes">VS11WINEXPRESS_IDE</Custom>
196
+ </InstallExecuteSequence>
197
+ </Fragment>
198
+ <!-- Custom action definition to run vswinexpress.exe /InstallVSTemplates -->
199
+ <Fragment>
200
+ <CustomAction Id="VS11WinExpressInstallVSTemplates" Property="VS11WINEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
201
+ <PropertyRef Id="VS11WINEXPRESS_IDE" />
202
+ <InstallExecuteSequence>
203
+ <Custom Action="VS11WinExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS11WINEXPRESS_IDE</Custom>
204
+ </InstallExecuteSequence>
205
+ </Fragment>
206
+</Wix>
src/wixlib/VS14.wxs
new
+187
@@ -0,0 +1,187 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS14_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS14DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS14ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS14_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS14DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS14ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS14_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS14ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="14.0" Type="raw">
25
+ <DirectorySearch Id="VS14XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS14XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS14_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS14DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS14ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS14_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVS14BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\4.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS14_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS14RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="14.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS14DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS14DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS14Setup" Property="VS14DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS14DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS14Setup" Before="InstallFinalize" Overridable="yes">VS14DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS14InstallVSTemplates" Property="VS14DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS14DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS14InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS14DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
77
+ <!-- Visual Studio 14 standard or higher. If this property is set, that -->
78
+ <!-- means Visual Studio 14 standard or higher is installed and the Visual -->
79
+ <!-- C# language tools were installed as a part of VS 14 setup. -->
80
+ <Fragment>
81
+ <Property Id="VS14_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
82
+ <RegistrySearch Id="SearchForVCS14ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VC#" Name="ProductDir" Type="raw" />
83
+ </Property>
84
+ </Fragment>
85
+
86
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
87
+ <!-- Visual Studio 14 standard or higher. If this property is set, that -->
88
+ <!-- means Visual Studio 14 standard or higher is installed and the Visual -->
89
+ <!-- Basic language tools were installed as a part of VS 14 setup. -->
90
+ <Fragment>
91
+ <Property Id="VS14_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
92
+ <RegistrySearch Id="SearchForVB14ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VB" Name="ProductDir" Type="raw" />
93
+ </Property>
94
+ </Fragment>
95
+
96
+ <!-- Indicates whether the Visual Web Developer 14 Express IDE component is installed. -->
97
+ <!-- If this property is set, that means Visual Web Developer 14 Express Edition is -->
98
+ <!-- installed on the system. -->
99
+ <Fragment>
100
+ <Property Id="VWD14EXPRESS_IDE" Secure="yes">
101
+ <RegistrySearch Id="VWD14ExpressSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VWDExpress\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
102
+ </Property>
103
+ </Fragment>
104
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
105
+ <Fragment>
106
+ <CustomAction Id="VWD14Setup" Property="VWD14EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
107
+ <PropertyRef Id="VWD14EXPRESS_IDE" />
108
+ <InstallExecuteSequence>
109
+ <Custom Action="VWD14Setup" Before="InstallFinalize" Overridable="yes">VWD14EXPRESS_IDE</Custom>
110
+ </InstallExecuteSequence>
111
+ </Fragment>
112
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
113
+ <Fragment>
114
+ <CustomAction Id="VWD14InstallVSTemplates" Property="VWD14EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
115
+ <PropertyRef Id="VWD14EXPRESS_IDE" />
116
+ <InstallExecuteSequence>
117
+ <Custom Action="VWD14InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD14EXPRESS_IDE</Custom>
118
+ </InstallExecuteSequence>
119
+ </Fragment>
120
+
121
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
122
+ <!-- Visual Studio 14 standard or higher. If this property is set, that -->
123
+ <!-- means Visual Studio 14 standard or higher is installed and the Visual -->
124
+ <!-- Web Developer language tools were installed as a part of VS 14 setup. -->
125
+ <Fragment>
126
+ <Property Id="VS14_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
127
+ <ComponentSearch Id="SearchForVWD14ProjectSystemUnderVSSetup" Guid="274EB373-6B78-5EBD-8A6C-6D8094E58ECB" />
128
+ <ComponentSearch Id="SearchForVWD14ProjectSystemUnderVWDSetup" Guid="71EBDA4A-4A15-426F-95C4-4FC051FD7AA4" Type="directory" />
129
+ </Property>
130
+ </Fragment>
131
+
132
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
133
+ <!-- Visual Studio 14 standard or higher. If this property is set, that -->
134
+ <!-- means Visual Studio 14 standard or higher is installed and the Visual -->
135
+ <!-- C++ language tools were installed as a part of VS 14 setup. -->
136
+ <Fragment>
137
+ <Property Id="VS14_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
138
+ <RegistrySearch Id="SearchForVC14ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VC" Name="ProductDir" Type="raw" />
139
+ </Property>
140
+ </Fragment>
141
+
142
+ <!-- Indicates whether the Visual Studio 14 Team Test project system is installed -->
143
+ <Fragment>
144
+ <Property Id="VS14_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
145
+ <RegistrySearch Id="SearchForVSTS14TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
146
+ </Property>
147
+ </Fragment>
148
+
149
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
150
+ <Fragment>
151
+ <Property Id="VS14_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
152
+ <RegistrySearch Id="SearchForVSTS14ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
153
+ </Property>
154
+ </Fragment>
155
+
156
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
157
+ <Fragment>
158
+ <Property Id="VS14_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
159
+ <RegistrySearch Id="SearchForVSTS14FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\F#" Name="ProductDir" Type="raw" />
160
+ </Property>
161
+ </Fragment>
162
+
163
+ <!-- Indicates whether the Visual Studio Express for Windows IDE component is installed. -->
164
+ <!-- If this property is set, that means Visual Studio Express for Windows is installed -->
165
+ <!-- on the system. -->
166
+ <Fragment>
167
+ <Property Id="VS14WINEXPRESS_IDE" Secure="yes">
168
+ <RegistrySearch Id="VS14WinExpressSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VSWinExpress\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
169
+ </Property>
170
+ </Fragment>
171
+ <!-- Custom action definition to run vswinexpress.exe /setup -->
172
+ <Fragment>
173
+ <CustomAction Id="VS14WinExpressSetup" Property="VS14WINEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
174
+ <PropertyRef Id="VS14WINEXPRESS_IDE" />
175
+ <InstallExecuteSequence>
176
+ <Custom Action="VS14WinExpressSetup" Before="InstallFinalize" Overridable="yes">VS14WINEXPRESS_IDE</Custom>
177
+ </InstallExecuteSequence>
178
+ </Fragment>
179
+ <!-- Custom action definition to run vswinexpress.exe /InstallVSTemplates -->
180
+ <Fragment>
181
+ <CustomAction Id="VS14WinExpressInstallVSTemplates" Property="VS14WINEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
182
+ <PropertyRef Id="VS14WINEXPRESS_IDE" />
183
+ <InstallExecuteSequence>
184
+ <Custom Action="VS14WinExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS14WINEXPRESS_IDE</Custom>
185
+ </InstallExecuteSequence>
186
+ </Fragment>
187
+</Wix>
src/wixlib/VS2003.wxs
new
+28
@@ -0,0 +1,28 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <!-- Visual Studio 2003 .NET -->
7
+ <Fragment>
8
+ <Property Id="VS2003DEVENV" Secure="yes">
9
+ <RegistrySearch Id="VS2003DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\7.1\Setup\VS" Name="EnvironmentPath" Type="raw" />
10
+ </Property>
11
+ </Fragment>
12
+
13
+ <Fragment>
14
+ <CustomAction Id="VS2003Setup" Property="VS2003DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
15
+ <PropertyRef Id="VS2003DEVENV" />
16
+
17
+ <InstallExecuteSequence>
18
+ <Custom Action="VS2003Setup" Before="InstallFinalize" Overridable="yes">VS2003DEVENV</Custom>
19
+ </InstallExecuteSequence>
20
+ </Fragment>
21
+
22
+ <!-- Indicates whether or not the J# redistributable package 1.1 is installed. -->
23
+ <Fragment>
24
+ <Property Id="JSHARP_REDIST_11_INSTALLED" Secure="yes">
25
+ <RegistrySearch Id="JSharpRedist11RegKey" Root="HKLM" Key="Software\Microsoft\Visual JSharp Setup\Redist\v1.1.4322" Name="Install" Type="raw" />
26
+ </Property>
27
+ </Fragment>
28
+</Wix>
src/wixlib/VS2005.wxs
new
+370
@@ -0,0 +1,370 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <!-- Visual Studio 2005 -->
7
+ <Fragment>
8
+ <Property Id="VS2005DEVENV" Secure="yes">
9
+ <RegistrySearch Id="VS2005DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
10
+ </Property>
11
+ </Fragment>
12
+
13
+ <Fragment>
14
+ <Property Id="VS2005_ITEMTEMPLATES_DIR" Secure="yes">
15
+ <RegistrySearch Id="VS2005DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS" Name="EnvironmentPath" Type="raw">
16
+ <DirectorySearch Id="VS2005ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
17
+ </RegistrySearch>
18
+ </Property>
19
+ </Fragment>
20
+
21
+ <Fragment>
22
+ <Property Id="VS2005_PROJECTTEMPLATES_DIR" Secure="yes">
23
+ <RegistrySearch Id="VS2005DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Setup\VS" Name="EnvironmentPath" Type="raw">
24
+ <DirectorySearch Id="VS2005ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
25
+ </RegistrySearch>
26
+ </Property>
27
+ </Fragment>
28
+
29
+ <Fragment>
30
+ <Property Id="VS2005_SCHEMAS_DIR" Secure="yes">
31
+ <RegistrySearch Id="VS2005ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="8.0" Type="raw">
32
+ <DirectorySearch Id="VS2005XmlPathSearch" Path="Xml" Depth="1">
33
+ <DirectorySearch Id="VS2005XmlSchemasPathSearch" Path="Schemas" Depth="1" />
34
+ </DirectorySearch>
35
+ </RegistrySearch>
36
+ </Property>
37
+ </Fragment>
38
+
39
+ <Fragment>
40
+ <Property Id="VS2005PROJECTAGGREGATOR2" Secure="yes">
41
+ <ComponentSearch Id="VS2005ProjectAggregator2Search" Guid="B0BB80E0-5CCC-474E-A75E-05DC1AE073BC" />
42
+ </Property>
43
+ </Fragment>
44
+
45
+ <Fragment>
46
+ <CustomAction Id="VS2005Setup" Property="VS2005DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
47
+ <PropertyRef Id="VS2005DEVENV" />
48
+
49
+ <InstallExecuteSequence>
50
+ <Custom Action="VS2005Setup" Before="InstallFinalize" Overridable="yes">VS2005DEVENV</Custom>
51
+ </InstallExecuteSequence>
52
+ </Fragment>
53
+
54
+ <Fragment>
55
+ <CustomAction Id="VS2005InstallVSTemplates" Property="VS2005DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
56
+ <PropertyRef Id="VS2005DEVENV" />
57
+
58
+ <InstallExecuteSequence>
59
+ <Custom Action="VS2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2005DEVENV</Custom>
60
+ </InstallExecuteSequence>
61
+ </Fragment>
62
+
63
+ <!-- Location of the Visual Studio 2005 root installation directory. -->
64
+ <Fragment>
65
+ <Property Id="VS2005_ROOT_FOLDER" Secure="yes">
66
+ <RegistrySearch Id="SearchForVS2005RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="8.0" Type="raw" />
67
+ </Property>
68
+ </Fragment>
69
+
70
+ <!-- Indicates whether the Visual C# 2005 Express IDE component is installed. -->
71
+ <!-- If this property is set, that means Visual C# 2005 Express Edition is -->
72
+ <!-- installed on the system. -->
73
+ <Fragment>
74
+ <Property Id="VCSHARP2005EXPRESS_IDE" Secure="yes">
75
+ <ComponentSearch Id="SearchForVcsExpressIde2005Component" Guid="E8A67F23-21D0-4E7B-BBD3-54E2D505BED8" Type="file" >
76
+ <FileSearch Id="VcsExpressIde2005" Name="vcsexpress.exe"/>
77
+ </ComponentSearch>
78
+ </Property>
79
+ </Fragment>
80
+
81
+ <!-- Custom action definition to run vcsexpress.exe /setup -->
82
+ <Fragment>
83
+ <CustomAction Id="VCSHARP2005Setup" Property="VCSHARP2005EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
84
+ <PropertyRef Id="VCSHARP2005EXPRESS_IDE" />
85
+
86
+ <InstallExecuteSequence>
87
+ <Custom Action="VCSHARP2005Setup" Before="InstallFinalize" Overridable="yes">VCSHARP2005EXPRESS_IDE</Custom>
88
+ </InstallExecuteSequence>
89
+ </Fragment>
90
+
91
+ <!-- Custom action definition to run vcsexpress.exe /InstallVSTemplates -->
92
+ <Fragment>
93
+ <CustomAction Id="VCSHARP2005InstallVSTemplates" Property="VCSHARP2005EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
94
+ <PropertyRef Id="VCSHARP2005EXPRESS_IDE" />
95
+
96
+ <InstallExecuteSequence>
97
+ <Custom Action="VCSHARP2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VCSHARP2005EXPRESS_IDE</Custom>
98
+ </InstallExecuteSequence>
99
+ </Fragment>
100
+
101
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
102
+ <!-- Visual Studio 2005 standard or higher. If this property is set, that -->
103
+ <!-- means Visual Studio 2005 standard or higher is installed and the Visual -->
104
+ <!-- C# language tools were installed as a part of VS 2005 setup. -->
105
+ <Fragment>
106
+ <Property Id="VS2005_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
107
+ <RegistrySearch Id="SearchForVCSProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" Name="DefaultProjectExtension" Type="raw" />
108
+ </Property>
109
+ </Fragment>
110
+
111
+ <!-- Indicates whether the Visual Basic 2005 Express IDE component is installed. -->
112
+ <!-- If this property is set, that means Visual Basic 2005 Express Edition is -->
113
+ <!-- installed on the system. -->
114
+ <Fragment>
115
+ <Property Id="VB2005EXPRESS_IDE" Secure="yes">
116
+ <ComponentSearch Id="SearchForVbExpressIde2005Component" Guid="FCDD3EF0-FFF4-4391-9467-AA48ADC7028F" Type="file">
117
+ <FileSearch Id="VbExpressIde2005" Name="vbexpress.exe"/>
118
+ </ComponentSearch>
119
+ </Property>
120
+ </Fragment>
121
+
122
+ <!-- Custom action definition to run vbexpress.exe /setup -->
123
+ <Fragment>
124
+ <CustomAction Id="VB2005Setup" Property="VB2005EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
125
+ <PropertyRef Id="VB2005EXPRESS_IDE" />
126
+
127
+ <InstallExecuteSequence>
128
+ <Custom Action="VB2005Setup" Before="InstallFinalize" Overridable="yes">VB2005EXPRESS_IDE</Custom>
129
+ </InstallExecuteSequence>
130
+ </Fragment>
131
+
132
+ <!-- Custom action definition to run vbexpress.exe /InstallVSTemplates -->
133
+ <Fragment>
134
+ <CustomAction Id="VB2005InstallVSTemplates" Property="VB2005EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
135
+ <PropertyRef Id="VB2005EXPRESS_IDE" />
136
+
137
+ <InstallExecuteSequence>
138
+ <Custom Action="VB2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VB2005EXPRESS_IDE</Custom>
139
+ </InstallExecuteSequence>
140
+ </Fragment>
141
+
142
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
143
+ <!-- Visual Studio 2005 standard or higher. If this property is set, that -->
144
+ <!-- means Visual Studio 2005 standard or higher is installed and the Visual -->
145
+ <!-- Basic language tools were installed as a part of VS 2005 setup. -->
146
+ <Fragment>
147
+ <Property Id="VS2005_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
148
+ <RegistrySearch Id="SearchForVBProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{F184B08F-C81C-45f6-A57F-5ABD9991F28F}" Name="DefaultProjectExtension" Type="raw" />
149
+ </Property>
150
+ </Fragment>
151
+
152
+ <!-- Indicates whether the Visual Web Developer 2005 Express IDE component is installed. -->
153
+ <!-- If this property is set, that means Visual Web Developer 2005 Express Edition is -->
154
+ <!-- installed on the system. -->
155
+ <Fragment>
156
+ <Property Id="VWD2005EXPRESS_IDE" Secure="yes">
157
+ <ComponentSearch Id="SearchForVwdExpressIde2005Component" Guid="56B053EA-AEFA-490A-A537-5EA145574862" Type="file">
158
+ <FileSearch Id="VwdExpressIde2005" Name="vwdexpress.exe"/>
159
+ </ComponentSearch>
160
+ </Property>
161
+ </Fragment>
162
+
163
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
164
+ <Fragment>
165
+ <CustomAction Id="VWD2005Setup" Property="VWD2005EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
166
+ <PropertyRef Id="VWD2005EXPRESS_IDE" />
167
+
168
+ <InstallExecuteSequence>
169
+ <Custom Action="VWD2005Setup" Before="InstallFinalize" Overridable="yes">VWD2005EXPRESS_IDE</Custom>
170
+ </InstallExecuteSequence>
171
+ </Fragment>
172
+
173
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
174
+ <Fragment>
175
+ <CustomAction Id="VWD2005InstallVSTemplates" Property="VWD2005EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
176
+ <PropertyRef Id="VWD2005EXPRESS_IDE" />
177
+
178
+ <InstallExecuteSequence>
179
+ <Custom Action="VWD2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD2005EXPRESS_IDE</Custom>
180
+ </InstallExecuteSequence>
181
+ </Fragment>
182
+
183
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
184
+ <!-- Visual Studio 2005 standard or higher. If this property is set, that -->
185
+ <!-- means Visual Studio 2005 standard or higher is installed and the Visual -->
186
+ <!-- Web Developer language tools were installed as a part of VS 2005 setup. -->
187
+ <Fragment>
188
+ <Property Id="VS2005_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
189
+ <RegistrySearch Id="SearchForVWDProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}" Name="DefaultProjectExtension" Type="raw" />
190
+ </Property>
191
+ </Fragment>
192
+
193
+ <!-- Indicates whether the Visual C++ 2005 Express IDE component is installed. -->
194
+ <!-- If this property is set, that means Visual C++ 2005 Express Edition is -->
195
+ <!-- installed on the system. -->
196
+ <Fragment>
197
+ <Property Id="VC2005EXPRESS_IDE" Secure="yes">
198
+ <ComponentSearch Id="SearchForVcExpressIde2005Component" Guid="83D8DFB7-73ED-4C83-9606-805F4CD7E1EE" Type="file">
199
+ <FileSearch Id="VcExpressIde2005" Name="vcexpress.exe"/>
200
+ </ComponentSearch>
201
+ </Property>
202
+ </Fragment>
203
+
204
+ <!-- Custom action definition to run vcexpress.exe /setup -->
205
+ <Fragment>
206
+ <CustomAction Id="VC2005Setup" Property="VC2005EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
207
+ <PropertyRef Id="VC2005EXPRESS_IDE" />
208
+
209
+ <InstallExecuteSequence>
210
+ <Custom Action="VC2005Setup" Before="InstallFinalize" Overridable="yes">VC2005EXPRESS_IDE</Custom>
211
+ </InstallExecuteSequence>
212
+ </Fragment>
213
+
214
+ <!-- Custom action definition to run vcexpress.exe /InstallVSTemplates -->
215
+ <Fragment>
216
+ <CustomAction Id="VC2005InstallVSTemplates" Property="VC2005EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
217
+ <PropertyRef Id="VC2005EXPRESS_IDE" />
218
+
219
+ <InstallExecuteSequence>
220
+ <Custom Action="VC2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VC2005EXPRESS_IDE</Custom>
221
+ </InstallExecuteSequence>
222
+ </Fragment>
223
+
224
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
225
+ <!-- Visual Studio 2005 standard or higher. If this property is set, that -->
226
+ <!-- means Visual Studio 2005 standard or higher is installed and the Visual -->
227
+ <!-- C++ language tools were installed as a part of VS 2005 setup. -->
228
+ <Fragment>
229
+ <Property Id="VS2005_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
230
+ <RegistrySearch Id="SearchForVCProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" Name="DefaultProjectExtension" Type="raw" />
231
+ </Property>
232
+ </Fragment>
233
+
234
+ <!-- Indicates whether the Visual J# 2005 Express IDE component is installed. -->
235
+ <!-- If this property is set, that means Visual J# 2005 Express Edition is -->
236
+ <!-- installed on the system. -->
237
+ <Fragment>
238
+ <Property Id="VJSHARP2005EXPRESS_IDE" Secure="yes">
239
+ <ComponentSearch Id="SearchForVjsExpressIde2005Component" Guid="7077FCC9-C3E4-437E-83ED-D5D7D8D9BB6C" Type="file">
240
+ <FileSearch Id="VjsExpressIde2005" Name="vjsexpress.exe"/>
241
+ </ComponentSearch>
242
+ </Property>
243
+ </Fragment>
244
+
245
+ <!-- Custom action definition to run vjsexpress.exe /setup -->
246
+ <Fragment>
247
+ <CustomAction Id="VJSHARP2005Setup" Property="VJSHARP2005EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
248
+ <PropertyRef Id="VJSHARP2005EXPRESS_IDE" />
249
+
250
+ <InstallExecuteSequence>
251
+ <Custom Action="VJSHARP2005Setup" Before="InstallFinalize" Overridable="yes">VJSHARP2005EXPRESS_IDE</Custom>
252
+ </InstallExecuteSequence>
253
+ </Fragment>
254
+
255
+ <!-- Custom action definition to run vjsexpress.exe /InstallVSTemplates -->
256
+ <Fragment>
257
+ <CustomAction Id="VJSHARP2005InstallVSTemplates" Property="VJSHARP2005EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
258
+ <PropertyRef Id="VJSHARP2005EXPRESS_IDE" />
259
+
260
+ <InstallExecuteSequence>
261
+ <Custom Action="VJSHARP2005InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VJSHARP2005EXPRESS_IDE</Custom>
262
+ </InstallExecuteSequence>
263
+ </Fragment>
264
+
265
+ <!-- Indicates whether the Visual J# project system is installed as a part of -->
266
+ <!-- Visual Studio 2005 standard or higher. If this property is set, that -->
267
+ <!-- means Visual Studio 2005 standard or higher is installed and the Visual -->
268
+ <!-- J# language tools were installed as a part of VS 2005 setup. -->
269
+ <Fragment>
270
+ <Property Id="VS2005_IDE_VJSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
271
+ <RegistrySearch Id="SearchForVJSProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}" Name="DefaultProjectExtension" Type="raw" />
272
+ </Property>
273
+ </Fragment>
274
+
275
+ <!-- Indicates whether the Visual Studio Code Name "Orcas" Development Tools -->
276
+ <!-- for .NET Framework 3.0 add-in is installed for Visual Studio 2005. -->
277
+ <Fragment>
278
+ <Property Id="VSEXTENSIONS_FOR_NETFX30_INSTALLED" Secure="yes">
279
+ <ComponentSearch Id="SearchForVSExtensionsForNetfx30RootComponent" Guid="72616A39-A8E6-4187-BC32-0950598B4499" Type="file" />
280
+ </Property>
281
+ </Fragment>
282
+
283
+ <!-- Indicates whether the Visual Studio Team Test project system is installed -->
284
+ <Fragment>
285
+ <Property Id="VS2005_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
286
+ <RegistrySearch Id="SearchForVSTSTestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
287
+ </Property>
288
+ </Fragment>
289
+
290
+ <!-- Indicates whether the Web Application Project is installed as a part of -->
291
+ <!-- Visual Studio 2005 standard or higher. This project type is installed -->
292
+ <!-- as a standalone package and as a part of Visual Studio 2005 SP1. -->
293
+ <Fragment>
294
+ <Property Id="VS2005_WAP_PROJECT_INSTALLED" Secure="yes">
295
+ <RegistrySearch Id="SearchForVS2005WAPProject" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\8.0\Packages\{349c5850-65df-11da-9384-00065b846f21}" Name="ProductName" Type="raw" />
296
+ </Property>
297
+ </Fragment>
298
+
299
+ <!-- Indicates the service pack level for Visual Studio 2005 standard edition -->
300
+ <!-- and higher. -->
301
+ <Fragment>
302
+ <Property Id="VS2005_SP_LEVEL" Secure="yes">
303
+ <RegistrySearch Id="SearchForVS2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VS\Servicing\8.0" Name="SP" Type="raw" />
304
+ </Property>
305
+ </Fragment>
306
+
307
+ <!-- Indicates the service pack level for Visual Basic 2005 Express Edition. -->
308
+ <Fragment>
309
+ <Property Id="VB2005EXPRESS_SP_LEVEL" Secure="yes">
310
+ <RegistrySearch Id="SearchForVBExp2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VB\Servicing\8.0" Name="SP" Type="raw" />
311
+ </Property>
312
+ </Fragment>
313
+
314
+ <!-- Indicates the service pack level for Visual C++ 2005 Express Edition. -->
315
+ <Fragment>
316
+ <Property Id="VC2005EXPRESS_SP_LEVEL" Secure="yes">
317
+ <RegistrySearch Id="SearchForVCExp2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VC\Servicing\8.0" Name="SP" Type="raw" />
318
+ </Property>
319
+ </Fragment>
320
+
321
+ <!-- Indicates the service pack level for Visual C# 2005 Express Edition. -->
322
+ <Fragment>
323
+ <Property Id="VCSHARP2005EXPRESS_SP_LEVEL" Secure="yes">
324
+ <RegistrySearch Id="SearchForVCSharpExp2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VCS\Servicing\8.0" Name="SP" Type="raw" />
325
+ </Property>
326
+ </Fragment>
327
+
328
+ <!-- Indicates the service pack level for Visual J# 2005 Express Edition. -->
329
+ <Fragment>
330
+ <Property Id="VJSHARP2005EXPRESS_SP_LEVEL" Secure="yes">
331
+ <RegistrySearch Id="SearchForVJSharpExp2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VJS\Servicing\8.0" Name="SP" Type="raw" />
332
+ </Property>
333
+ </Fragment>
334
+
335
+ <!-- Indicates the service pack level for Visual Web Developer 2005 Express -->
336
+ <!-- Edition. -->
337
+ <Fragment>
338
+ <Property Id="VWD2005EXPRESS_SP_LEVEL" Secure="yes">
339
+ <RegistrySearch Id="SearchForVWDExp2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VNS\Servicing\8.0" Name="SP" Type="raw" />
340
+ </Property>
341
+ </Fragment>
342
+
343
+ <!-- Indicates the service pack level for Visual Studio 2005 Team Foundation. -->
344
+ <Fragment>
345
+ <Property Id="VSTF2005_SP_LEVEL" Secure="yes">
346
+ <RegistrySearch Id="SearchForVSTF2005SP1" Root="HKLM" Key="SOFTWARE\Microsoft\DevDiv\VSTF\Servicing\8.0" Name="SP" Type="raw" />
347
+ </Property>
348
+ </Fragment>
349
+
350
+ <!-- Indicates whether or not the Document Explorer 2005 runtime components are installed. -->
351
+ <Fragment>
352
+ <Property Id="DEXPLORE_2005_INSTALLED" Secure="yes">
353
+ <RegistrySearch Id="Dexplore2005RegKey" Root="HKLM" Key="Software\Microsoft\DExplore\v2.0.50727\1033" Name="Install" Type="raw" />
354
+ </Property>
355
+ </Fragment>
356
+
357
+ <!-- Indicates whether or not the J# redistributable package 2.0 first edition is installed. -->
358
+ <Fragment>
359
+ <Property Id="JSHARP_REDIST_20_INSTALLED" Secure="yes">
360
+ <RegistrySearch Id="JSharpRedist20RegKey" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual J# 2.0 Redistributable Package" Name="UninstallPath" Type="raw" />
361
+ </Property>
362
+ </Fragment>
363
+
364
+ <!-- Indicates whether or not the J# redistributable package 2.0 second edition is installed. -->
365
+ <Fragment>
366
+ <Property Id="JSHARP_REDIST_20SE_INSTALLED" Secure="yes">
367
+ <RegistrySearch Id="JSharpRedist20SERegKey" Root="HKLM" Key="Software\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Visual J# 2.0 Redistributable Package - SE" Name="UninstallPath" Type="raw" />
368
+ </Property>
369
+ </Fragment>
370
+</Wix>
src/wixlib/VS2008.wxs
new
+300
@@ -0,0 +1,300 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <!-- Visual Studio 2008 -->
7
+ <Fragment>
8
+ <Property Id="VS90DEVENV" Secure="yes">
9
+ <RegistrySearch Id="VS90DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
10
+ </Property>
11
+ </Fragment>
12
+
13
+ <Fragment>
14
+ <Property Id="VS90_ITEMTEMPLATES_DIR" Secure="yes">
15
+ <RegistrySearch Id="VS90DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentPath" Type="raw">
16
+ <DirectorySearch Id="VS90ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
17
+ </RegistrySearch>
18
+ </Property>
19
+ </Fragment>
20
+
21
+ <Fragment>
22
+ <Property Id="VS90_PROJECTTEMPLATES_DIR" Secure="yes">
23
+ <RegistrySearch Id="VS90DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentPath" Type="raw">
24
+ <DirectorySearch Id="VS90ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
25
+ </RegistrySearch>
26
+ </Property>
27
+ </Fragment>
28
+
29
+ <Fragment>
30
+ <Property Id="VS90_SCHEMAS_DIR" Secure="yes">
31
+ <RegistrySearch Id="VS90ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="9.0" Type="raw">
32
+ <DirectorySearch Id="VS90XmlPathSearch" Path="Xml" Depth="1">
33
+ <DirectorySearch Id="VS90XmlSchemasPathSearch" Path="Schemas" Depth="1" />
34
+ </DirectorySearch>
35
+ </RegistrySearch>
36
+ </Property>
37
+ </Fragment>
38
+
39
+ <Fragment>
40
+ <CustomAction Id="VS90Setup" Property="VS90DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
41
+ <PropertyRef Id="VS90DEVENV" />
42
+
43
+ <InstallExecuteSequence>
44
+ <Custom Action="VS90Setup" Before="InstallFinalize" Overridable="yes">VS90DEVENV</Custom>
45
+ </InstallExecuteSequence>
46
+ </Fragment>
47
+
48
+ <Fragment>
49
+ <CustomAction Id="VS90InstallVSTemplates" Property="VS90DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
50
+ <PropertyRef Id="VS90DEVENV" />
51
+
52
+ <InstallExecuteSequence>
53
+ <Custom Action="VS90InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS90DEVENV</Custom>
54
+ </InstallExecuteSequence>
55
+ </Fragment>
56
+
57
+ <!-- Location of the Visual Studio 2008 root installation directory. -->
58
+ <Fragment>
59
+ <Property Id="VS90_ROOT_FOLDER" Secure="yes">
60
+ <RegistrySearch Id="SearchForVS90RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="9.0" Type="raw" />
61
+ </Property>
62
+ </Fragment>
63
+
64
+ <!-- Indicates whether the Visual C# 2008 Express IDE component is installed. -->
65
+ <!-- If this property is set, that means Visual C# 2008 Express Edition is -->
66
+ <!-- installed on the system. -->
67
+ <Fragment>
68
+ <Property Id="VCSHARP90EXPRESS_IDE" Secure="yes">
69
+ <ComponentSearch Id="SearchForVcsExpressIde90Component" Guid="EF0BC34E-6AAE-47C0-8FEC-7E00C2638209" Type="file" >
70
+ <FileSearch Id="VcsExpressIde90" Name="vcsexpress.exe"/>
71
+ </ComponentSearch>
72
+ </Property>
73
+ </Fragment>
74
+
75
+ <!-- Custom action definition to run vcsexpress.exe /setup -->
76
+ <Fragment>
77
+ <CustomAction Id="VCSHARP90Setup" Property="VCSHARP90EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
78
+ <PropertyRef Id="VCSHARP90EXPRESS_IDE" />
79
+
80
+ <InstallExecuteSequence>
81
+ <Custom Action="VCSHARP90Setup" Before="InstallFinalize" Overridable="yes">VCSHARP90EXPRESS_IDE</Custom>
82
+ </InstallExecuteSequence>
83
+ </Fragment>
84
+
85
+ <!-- Custom action definition to run vcsexpress.exe /InstallVSTemplates -->
86
+ <Fragment>
87
+ <CustomAction Id="VCSHARP90InstallVSTemplates" Property="VCSHARP90EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
88
+ <PropertyRef Id="VCSHARP90EXPRESS_IDE" />
89
+
90
+ <InstallExecuteSequence>
91
+ <Custom Action="VCSHARP90InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VCSHARP90EXPRESS_IDE</Custom>
92
+ </InstallExecuteSequence>
93
+ </Fragment>
94
+
95
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
96
+ <!-- Visual Studio 2008 standard or higher. If this property is set, that -->
97
+ <!-- means Visual Studio 2008 standard or higher is installed and the Visual -->
98
+ <!-- C# language tools were installed as a part of VS 2008 setup. -->
99
+ <Fragment>
100
+ <Property Id="VS90_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
101
+ <RegistrySearch Id="SearchForVCS90ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" Name="DefaultProjectExtension" Type="raw" />
102
+ </Property>
103
+ </Fragment>
104
+
105
+ <!-- Indicates whether the Visual Basic 2008 Express IDE component is installed. -->
106
+ <!-- If this property is set, that means Visual Basic 2008 Express Edition is -->
107
+ <!-- installed on the system. -->
108
+ <Fragment>
109
+ <Property Id="VB90EXPRESS_IDE" Secure="yes">
110
+ <ComponentSearch Id="SearchForVbExpressIde90Component" Guid="010A50C6-8604-4BA2-8CA1-4EC3A5B861B2" Type="file">
111
+ <FileSearch Id="VbExpressIde90" Name="vbexpress.exe"/>
112
+ </ComponentSearch>
113
+ </Property>
114
+ </Fragment>
115
+
116
+ <!-- Custom action definition to run vbexpress.exe /setup -->
117
+ <Fragment>
118
+ <CustomAction Id="VB90Setup" Property="VB90EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
119
+ <PropertyRef Id="VB90EXPRESS_IDE" />
120
+
121
+ <InstallExecuteSequence>
122
+ <Custom Action="VB90Setup" Before="InstallFinalize" Overridable="yes">VB90EXPRESS_IDE</Custom>
123
+ </InstallExecuteSequence>
124
+ </Fragment>
125
+
126
+ <!-- Custom action definition to run vbexpress.exe /InstallVSTemplates -->
127
+ <Fragment>
128
+ <CustomAction Id="VB90InstallVSTemplates" Property="VB90EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
129
+ <PropertyRef Id="VB90EXPRESS_IDE" />
130
+
131
+ <InstallExecuteSequence>
132
+ <Custom Action="VB90InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VB90EXPRESS_IDE</Custom>
133
+ </InstallExecuteSequence>
134
+ </Fragment>
135
+
136
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
137
+ <!-- Visual Studio 2008 standard or higher. If this property is set, that -->
138
+ <!-- means Visual Studio 2008 standard or higher is installed and the Visual -->
139
+ <!-- Basic language tools were installed as a part of VS 2008 setup. -->
140
+ <Fragment>
141
+ <Property Id="VS90_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
142
+ <RegistrySearch Id="SearchForVB90ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{F184B08F-C81C-45f6-A57F-5ABD9991F28F}" Name="DefaultProjectExtension" Type="raw" />
143
+ </Property>
144
+ </Fragment>
145
+
146
+ <!-- Indicates whether the Visual Web Developer 2008 Express IDE component is installed. -->
147
+ <!-- If this property is set, that means Visual Web Developer 2008 Express Edition is -->
148
+ <!-- installed on the system. -->
149
+ <Fragment>
150
+ <Property Id="VWD90EXPRESS_IDE" Secure="yes">
151
+ <ComponentSearch Id="SearchForVwdExpressIde90Component" Guid="C7F516CB-CB5C-41B7-9CB4-33927C4DD206" Type="file">
152
+ <FileSearch Id="VwdExpressIde90" Name="vwdexpress.exe"/>
153
+ </ComponentSearch>
154
+ </Property>
155
+ </Fragment>
156
+
157
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
158
+ <Fragment>
159
+ <CustomAction Id="VWD90Setup" Property="VWD90EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
160
+ <PropertyRef Id="VWD90EXPRESS_IDE" />
161
+
162
+ <InstallExecuteSequence>
163
+ <Custom Action="VWD90Setup" Before="InstallFinalize" Overridable="yes">VWD90EXPRESS_IDE</Custom>
164
+ </InstallExecuteSequence>
165
+ </Fragment>
166
+
167
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
168
+ <Fragment>
169
+ <CustomAction Id="VWD90InstallVSTemplates" Property="VWD90EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
170
+ <PropertyRef Id="VWD90EXPRESS_IDE" />
171
+
172
+ <InstallExecuteSequence>
173
+ <Custom Action="VWD90InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD90EXPRESS_IDE</Custom>
174
+ </InstallExecuteSequence>
175
+ </Fragment>
176
+
177
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
178
+ <!-- Visual Studio 2008 standard or higher. If this property is set, that -->
179
+ <!-- means Visual Studio 2008 standard or higher is installed and the Visual -->
180
+ <!-- Web Developer language tools were installed as a part of VS 2008 setup. -->
181
+ <Fragment>
182
+ <Property Id="VS90_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
183
+ <RegistrySearch Id="SearchForVWD90ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}" Name="DefaultProjectExtension" Type="raw" />
184
+ </Property>
185
+ </Fragment>
186
+
187
+ <!-- Indicates whether the Visual C++ 2008 Express IDE component is installed. -->
188
+ <!-- If this property is set, that means Visual C++ 2008 Express Edition is -->
189
+ <!-- installed on the system. -->
190
+ <Fragment>
191
+ <Property Id="VC90EXPRESS_IDE" Secure="yes">
192
+ <ComponentSearch Id="SearchForVcExpressIde90Component" Guid="147EB31D-8042-4E8F-A3EC-D32C04ED652A" Type="file">
193
+ <FileSearch Id="VcExpressIde90" Name="vcexpress.exe"/>
194
+ </ComponentSearch>
195
+ </Property>
196
+ </Fragment>
197
+
198
+ <!-- Custom action definition to run vcexpress.exe /setup -->
199
+ <Fragment>
200
+ <CustomAction Id="VC90Setup" Property="VC90EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
201
+ <PropertyRef Id="VC90EXPRESS_IDE" />
202
+
203
+ <InstallExecuteSequence>
204
+ <Custom Action="VC90Setup" Before="InstallFinalize" Overridable="yes">VC90EXPRESS_IDE</Custom>
205
+ </InstallExecuteSequence>
206
+ </Fragment>
207
+
208
+ <!-- Custom action definition to run vcexpress.exe /InstallVSTemplates -->
209
+ <Fragment>
210
+ <CustomAction Id="VC90InstallVSTemplates" Property="VC90EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
211
+ <PropertyRef Id="VC90EXPRESS_IDE" />
212
+
213
+ <InstallExecuteSequence>
214
+ <Custom Action="VC90InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VC90EXPRESS_IDE</Custom>
215
+ </InstallExecuteSequence>
216
+ </Fragment>
217
+
218
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
219
+ <!-- Visual Studio 2008 standard or higher. If this property is set, that -->
220
+ <!-- means Visual Studio 2008 standard or higher is installed and the Visual -->
221
+ <!-- C++ language tools were installed as a part of VS 2008 setup. -->
222
+ <Fragment>
223
+ <Property Id="VS90_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
224
+ <RegistrySearch Id="SearchForVC90ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" Name="DefaultProjectExtension" Type="raw" />
225
+ </Property>
226
+ </Fragment>
227
+
228
+ <!-- Indicates whether the Visual Studio Team Test project system is installed -->
229
+ <Fragment>
230
+ <Property Id="VS90_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
231
+ <RegistrySearch Id="SearchForVSTS90TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
232
+ </Property>
233
+ </Fragment>
234
+
235
+ <!-- Location of the Visual Studio 2008 bootstrapper package install location -->
236
+ <Fragment>
237
+ <Property Id="VS90_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
238
+ <RegistrySearch Id="SearchForVs90BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\3.5" Name="Path" Type="raw" />
239
+ </Property>
240
+ </Fragment>
241
+
242
+ <!-- Indicates whether the Visual Studio 2008 SP1 version of devenv.exe is -->
243
+ <!-- installed on the system. -->
244
+ <Fragment>
245
+ <Property Id="VS90_SP1" Secure="yes">
246
+ <RegistrySearch Id="VS90DevEnvDirectorySearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\9.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
247
+ <DirectorySearch Id="VS90DevEnvFilePathSearch">
248
+ <FileSearch Id="VS90DevEnvFileVersionSearch" Name="devenv.exe" MinVersion="9.0.30729.0"/>
249
+ </DirectorySearch>
250
+ </RegistrySearch>
251
+ </Property>
252
+ </Fragment>
253
+
254
+ <!-- Indicates whether the Visual Studio 2008 SP1 version of vbexpress.exe is -->
255
+ <!-- installed on the system. -->
256
+ <Fragment>
257
+ <Property Id="VB90EXPRESS_SP1" Secure="yes">
258
+ <ComponentSearch Id="SearchForVbExpressIde90Component" Guid="010A50C6-8604-4BA2-8CA1-4EC3A5B861B2" Type="file">
259
+ <FileSearch Id="VB90ExpressFileVersionSearch" Name="vbexpress.exe" MinVersion="9.0.30729.0"/>
260
+ </ComponentSearch>
261
+ </Property>
262
+ </Fragment>
263
+
264
+ <!-- Indicates whether the Visual Studio 2008 SP1 version of vcexpress.exe is -->
265
+ <!-- installed on the system. -->
266
+ <Fragment>
267
+ <Property Id="VC90EXPRESS_SP1" Secure="yes">
268
+ <ComponentSearch Id="SearchForVcExpressIde90Component" Guid="147EB31D-8042-4E8F-A3EC-D32C04ED652A" Type="file">
269
+ <FileSearch Id="VC90ExpressFileVersionSearch" Name="vcexpress.exe" MinVersion="9.0.30729.0"/>
270
+ </ComponentSearch>
271
+ </Property>
272
+ </Fragment>
273
+
274
+ <!-- Indicates whether the Visual Studio 2008 SP1 version of vcsexpress.exe is -->
275
+ <!-- installed on the system. -->
276
+ <Fragment>
277
+ <Property Id="VCS90EXPRESS_SP1" Secure="yes">
278
+ <ComponentSearch Id="SearchForVcsExpressIde90Component" Guid="EF0BC34E-6AAE-47C0-8FEC-7E00C2638209" Type="file" >
279
+ <FileSearch Id="VCS90ExpressFileVersionSearch" Name="vcsexpress.exe" MinVersion="9.0.30729.0"/>
280
+ </ComponentSearch>
281
+ </Property>
282
+ </Fragment>
283
+
284
+ <!-- Indicates whether the Visual Studio 2008 SP1 version of vcsexpress.exe is -->
285
+ <!-- installed on the system. -->
286
+ <Fragment>
287
+ <Property Id="VWD90EXPRESS_SP1" Secure="yes">
288
+ <ComponentSearch Id="SearchForVwdExpressIde90Component" Guid="C7F516CB-CB5C-41B7-9CB4-33927C4DD206" Type="file">
289
+ <FileSearch Id="VWD90ExpressFileVersionSearch" Name="vwdexpress.exe" MinVersion="9.0.30729.0"/>
290
+ </ComponentSearch>
291
+ </Property>
292
+ </Fragment>
293
+
294
+ <!-- Indicates whether or not the Document Explorer 2008 runtime components are installed. -->
295
+ <Fragment>
296
+ <Property Id="DEXPLORE_2008_INSTALLED" Secure="yes">
297
+ <RegistrySearch Id="Dexplore2008RegKey" Root="HKLM" Key="Software\Microsoft\DExplore\v9.0.21022\1033" Name="Install" Type="raw" />
298
+ </Property>
299
+ </Fragment>
300
+</Wix>
src/wixlib/VS2010.wxs
new
+313
@@ -0,0 +1,313 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2010_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS2010DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS2010ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS2010_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS2010DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS2010ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS2010_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS2010ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="10.0" Type="raw">
25
+ <DirectorySearch Id="VS2010XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS2010XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS2010_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS2010DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS2010ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS2010_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVs2010BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\4.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS2010_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS2010RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="10.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS2010DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS2010DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS2010Setup" Property="VS2010DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS2010DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS2010Setup" Before="InstallFinalize" Overridable="yes">VS2010DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS2010InstallVSTemplates" Property="VS2010DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS2010DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2010DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# 2010 Express IDE component is installed. -->
77
+ <!-- If this property is set, that means Visual C# 2010 Express Edition is -->
78
+ <!-- installed on the system. -->
79
+ <Fragment>
80
+ <Property Id="VCSHARP2010EXPRESS_IDE" Secure="yes">
81
+ <ComponentSearch Id="SearchForVcsExpressIde2010Component" Guid="A4945167-D8A4-4B10-9B78-99C2CDC243EC" Type="file" >
82
+ <FileSearch Id="VcsExpressIde2010" Name="vcsexpress.exe"/>
83
+ </ComponentSearch>
84
+ </Property>
85
+ </Fragment>
86
+
87
+ <!-- Custom action definition to run vcsexpress.exe /setup -->
88
+ <Fragment>
89
+ <CustomAction Id="VCSHARP2010Setup" Property="VCSHARP2010EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
90
+ <PropertyRef Id="VCSHARP2010EXPRESS_IDE" />
91
+
92
+ <InstallExecuteSequence>
93
+ <Custom Action="VCSHARP2010Setup" Before="InstallFinalize" Overridable="yes">VCSHARP2010EXPRESS_IDE</Custom>
94
+ </InstallExecuteSequence>
95
+ </Fragment>
96
+
97
+ <!-- Custom action definition to run vcsexpress.exe /InstallVSTemplates -->
98
+ <Fragment>
99
+ <CustomAction Id="VCSHARP2010InstallVSTemplates" Property="VCSHARP2010EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
100
+ <PropertyRef Id="VCSHARP2010EXPRESS_IDE" />
101
+
102
+ <InstallExecuteSequence>
103
+ <Custom Action="VCSHARP2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VCSHARP2010EXPRESS_IDE</Custom>
104
+ </InstallExecuteSequence>
105
+ </Fragment>
106
+
107
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
108
+ <!-- Visual Studio 2010 standard or higher. If this property is set, that -->
109
+ <!-- means Visual Studio 2010 standard or higher is installed and the Visual -->
110
+ <!-- C# language tools were installed as a part of VS 2010 setup. -->
111
+ <Fragment>
112
+ <Property Id="VS2010_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
113
+ <RegistrySearch Id="SearchForVCS2010ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}" Name="DefaultProjectExtension" Type="raw" />
114
+ </Property>
115
+ </Fragment>
116
+
117
+ <!-- Indicates whether the Visual Basic 2010 Express IDE component is installed. -->
118
+ <!-- If this property is set, that means Visual Basic 2010 Express Edition is -->
119
+ <!-- installed on the system. -->
120
+ <Fragment>
121
+ <Property Id="VB2010EXPRESS_IDE" Secure="yes">
122
+ <ComponentSearch Id="SearchForVbExpressIde2010Component" Guid="3EDEF607-9E3A-4A64-BFE1-104979CF2899" Type="file">
123
+ <FileSearch Id="VbExpressIde2010" Name="vbexpress.exe"/>
124
+ </ComponentSearch>
125
+ </Property>
126
+ </Fragment>
127
+
128
+ <!-- Custom action definition to run vbexpress.exe /setup -->
129
+ <Fragment>
130
+ <CustomAction Id="VB2010Setup" Property="VB2010EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
131
+ <PropertyRef Id="VB2010EXPRESS_IDE" />
132
+
133
+ <InstallExecuteSequence>
134
+ <Custom Action="VB2010Setup" Before="InstallFinalize" Overridable="yes">VB2010EXPRESS_IDE</Custom>
135
+ </InstallExecuteSequence>
136
+ </Fragment>
137
+
138
+ <!-- Custom action definition to run vbexpress.exe /InstallVSTemplates -->
139
+ <Fragment>
140
+ <CustomAction Id="VB2010InstallVSTemplates" Property="VB2010EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
141
+ <PropertyRef Id="VB2010EXPRESS_IDE" />
142
+
143
+ <InstallExecuteSequence>
144
+ <Custom Action="VB2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VB2010EXPRESS_IDE</Custom>
145
+ </InstallExecuteSequence>
146
+ </Fragment>
147
+
148
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
149
+ <!-- Visual Studio 2010 standard or higher. If this property is set, that -->
150
+ <!-- means Visual Studio 2010 standard or higher is installed and the Visual -->
151
+ <!-- Basic language tools were installed as a part of VS 2010 setup. -->
152
+ <Fragment>
153
+ <Property Id="VS2010_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
154
+ <RegistrySearch Id="SearchForVB2010ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{F184B08F-C81C-45f6-A57F-5ABD9991F28F}" Name="DefaultProjectExtension" Type="raw" />
155
+ </Property>
156
+ </Fragment>
157
+
158
+ <!-- Indicates whether the Visual Web Developer 2010 Express IDE component is installed. -->
159
+ <!-- If this property is set, that means Visual Web Developer 2010 Express Edition is -->
160
+ <!-- installed on the system. -->
161
+ <Fragment>
162
+ <Property Id="VWD2010EXPRESS_IDE" Secure="yes">
163
+ <ComponentSearch Id="SearchForVwdExpressIde2010Component" Guid="771B6CF7-C8D2-4D85-BACD-ED01600256DC" Type="file">
164
+ <FileSearch Id="VwdExpressIde2010" Name="vwdexpress.exe"/>
165
+ </ComponentSearch>
166
+ </Property>
167
+ </Fragment>
168
+
169
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
170
+ <Fragment>
171
+ <CustomAction Id="VWD2010Setup" Property="VWD2010EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
172
+ <PropertyRef Id="VWD2010EXPRESS_IDE" />
173
+
174
+ <InstallExecuteSequence>
175
+ <Custom Action="VWD2010Setup" Before="InstallFinalize" Overridable="yes">VWD2010EXPRESS_IDE</Custom>
176
+ </InstallExecuteSequence>
177
+ </Fragment>
178
+
179
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
180
+ <Fragment>
181
+ <CustomAction Id="VWD2010InstallVSTemplates" Property="VWD2010EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
182
+ <PropertyRef Id="VWD2010EXPRESS_IDE" />
183
+
184
+ <InstallExecuteSequence>
185
+ <Custom Action="VWD2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD2010EXPRESS_IDE</Custom>
186
+ </InstallExecuteSequence>
187
+ </Fragment>
188
+
189
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
190
+ <!-- Visual Studio 2010 standard or higher. If this property is set, that -->
191
+ <!-- means Visual Studio 2010 standard or higher is installed and the Visual -->
192
+ <!-- Web Developer language tools were installed as a part of VS 2010 setup. -->
193
+ <Fragment>
194
+ <Property Id="VS2010_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
195
+ <RegistrySearch Id="SearchForVWD2010ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{E24C65DC-7377-472B-9ABA-BC803B73C61A}" Name="DefaultProjectExtension" Type="raw" />
196
+ </Property>
197
+ </Fragment>
198
+
199
+ <!-- Indicates whether the Visual C++ 2010 Express IDE component is installed. -->
200
+ <!-- If this property is set, that means Visual C++ 2010 Express Edition is -->
201
+ <!-- installed on the system. -->
202
+ <Fragment>
203
+ <Property Id="VC2010EXPRESS_IDE" Secure="yes">
204
+ <ComponentSearch Id="SearchForVcExpressIde2010Component" Guid="B455E8D3-90CB-47F6-AB7B-9B31E5DE6266" Type="file">
205
+ <FileSearch Id="VcExpressIde2010" Name="vcexpress.exe"/>
206
+ </ComponentSearch>
207
+ </Property>
208
+ </Fragment>
209
+
210
+ <!-- Custom action definition to run vcexpress.exe /setup -->
211
+ <Fragment>
212
+ <CustomAction Id="VC2010Setup" Property="VC2010EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
213
+ <PropertyRef Id="VC2010EXPRESS_IDE" />
214
+
215
+ <InstallExecuteSequence>
216
+ <Custom Action="VC2010Setup" Before="InstallFinalize" Overridable="yes">VC2010EXPRESS_IDE</Custom>
217
+ </InstallExecuteSequence>
218
+ </Fragment>
219
+
220
+ <!-- Custom action definition to run vcexpress.exe /InstallVSTemplates -->
221
+ <Fragment>
222
+ <CustomAction Id="VC2010InstallVSTemplates" Property="VC2010EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
223
+ <PropertyRef Id="VC2010EXPRESS_IDE" />
224
+
225
+ <InstallExecuteSequence>
226
+ <Custom Action="VC2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VC2010EXPRESS_IDE</Custom>
227
+ </InstallExecuteSequence>
228
+ </Fragment>
229
+
230
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
231
+ <!-- Visual Studio 2010 standard or higher. If this property is set, that -->
232
+ <!-- means Visual Studio 2010 standard or higher is installed and the Visual -->
233
+ <!-- C++ language tools were installed as a part of VS 2010 setup. -->
234
+ <Fragment>
235
+ <Property Id="VS2010_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
236
+ <RegistrySearch Id="SearchForVC2010ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}" Name="DefaultProjectExtension" Type="raw" />
237
+ </Property>
238
+ </Fragment>
239
+
240
+ <!-- Indicates whether the Visual Studio 2010 Express for Windows Phone IDE component is -->
241
+ <!-- installed. If this property is set, that means Visual Studio 2010 Express for -->
242
+ <!-- Windows Phone is installed on the system. -->
243
+ <Fragment>
244
+ <Property Id="VPD2010EXPRESS_IDE" Secure="yes">
245
+ <ComponentSearch Id="SearchForVpdExpressIde2010Component" Guid="80C81DB2-E95B-4C03-A559-C664E8411DDF" Type="file">
246
+ <FileSearch Id="VpdExpressIde2010" Name="vpdexpress.exe"/>
247
+ </ComponentSearch>
248
+ </Property>
249
+ </Fragment>
250
+
251
+ <!-- Custom action definition to run vpdexpress.exe /setup -->
252
+ <Fragment>
253
+ <CustomAction Id="VPD2010Setup" Property="VPD2010EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
254
+ <PropertyRef Id="VPD2010EXPRESS_IDE" />
255
+
256
+ <InstallExecuteSequence>
257
+ <Custom Action="VPD2010Setup" Before="InstallFinalize" Overridable="yes">VPD2010EXPRESS_IDE</Custom>
258
+ </InstallExecuteSequence>
259
+ </Fragment>
260
+
261
+ <!-- Custom action definition to run vpdexpress.exe /InstallVSTemplates -->
262
+ <Fragment>
263
+ <CustomAction Id="VPD2010InstallVSTemplates" Property="VPD2010EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
264
+ <PropertyRef Id="VPD2010EXPRESS_IDE" />
265
+
266
+ <InstallExecuteSequence>
267
+ <Custom Action="VPD2010InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VPD2010EXPRESS_IDE</Custom>
268
+ </InstallExecuteSequence>
269
+ </Fragment>
270
+
271
+ <!-- Indicates whether the Visual Studio 2010 Team Test project system is installed -->
272
+ <Fragment>
273
+ <Property Id="VS2010_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
274
+ <RegistrySearch Id="SearchForVSTS2010TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
275
+ </Property>
276
+ </Fragment>
277
+
278
+ <!-- Indicates whether the Visual Studio 2010 Database project system is installed -->
279
+ <Fragment>
280
+ <Property Id="VS2010_IDE_DB_PROJECTSYSTEM_INSTALLED" Secure="yes">
281
+ <RegistrySearch Id="SearchForVSTS2010DBSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{C8D11400-126E-41CD-887F-60BD40844F9E}" Name="Package" Type="raw" />
282
+ </Property>
283
+ </Fragment>
284
+
285
+ <!-- Indicates whether the Visual Studio 2010 Deployment project system (setup project) is installed -->
286
+ <Fragment>
287
+ <Property Id="VS2010_IDE_VSD_PROJECTSYSTEM_INSTALLED" Secure="yes">
288
+ <RegistrySearch Id="SearchForVSTS2010VSDSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{54435603-DBB4-11D2-8724-00A0C9A8B90C}" Name="Package" Type="raw" />
289
+ </Property>
290
+ </Fragment>
291
+
292
+ <!-- Indicates whether the WiX project system is installed for VS2010 -->
293
+ <Fragment>
294
+ <Property Id="VS2010_IDE_WIX_PROJECTSYSTEM_INSTALLED" Secure="yes">
295
+ <!-- Component search for the .pkgdef file for VS2010 -->
296
+ <ComponentSearch Id="SearchForVS2010WixSystemUnderVSSetup" Guid="3C5BA30B-0713-5E28-8EEA-171E7A5E4864" Type="file" />
297
+ </Property>
298
+ </Fragment>
299
+
300
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
301
+ <Fragment>
302
+ <Property Id="VS2010_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
303
+ <RegistrySearch Id="SearchForVSTS2010ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
304
+ </Property>
305
+ </Fragment>
306
+
307
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
308
+ <Fragment>
309
+ <Property Id="VS2010_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
310
+ <RegistrySearch Id="SearchForVSTS2010FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Projects\{f2a71f9b-5d33-465a-a702-920d77279786}" Name="Package" Type="raw" />
311
+ </Property>
312
+ </Fragment>
313
+</Wix>
src/wixlib/VS2012.wxs
new
+256
@@ -0,0 +1,256 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2012_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS2012DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS2012ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS2012_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS2012DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS2012ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS2012_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS2012ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="11.0" Type="raw">
25
+ <DirectorySearch Id="VS2012XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS2012XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS2012_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS2012DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS2012ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS2012_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVs2012BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\4.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS2012_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS2012RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="11.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS2012DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS2012DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS2012Setup" Property="VS2012DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS2012DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS2012Setup" Before="InstallFinalize" Overridable="yes">VS2012DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS2012InstallVSTemplates" Property="VS2012DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS2012DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS2012InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2012DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
77
+ <!-- Visual Studio 2012 standard or higher. If this property is set, that -->
78
+ <!-- means Visual Studio 2012 standard or higher is installed and the Visual -->
79
+ <!-- C# language tools were installed as a part of VS 2012 setup. -->
80
+ <Fragment>
81
+ <Property Id="VS2012_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
82
+ <RegistrySearch Id="SearchForVCS2012ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VC#" Name="ProductDir" Type="raw" />
83
+ </Property>
84
+ </Fragment>
85
+
86
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
87
+ <!-- Visual Studio 2012 standard or higher. If this property is set, that -->
88
+ <!-- means Visual Studio 2012 standard or higher is installed and the Visual -->
89
+ <!-- Basic language tools were installed as a part of VS 2012 setup. -->
90
+ <Fragment>
91
+ <Property Id="VS2012_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
92
+ <RegistrySearch Id="SearchForVB2012ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VB" Name="ProductDir" Type="raw" />
93
+ </Property>
94
+ </Fragment>
95
+
96
+ <!-- Indicates whether the Visual Web Developer 2012 Express IDE component is installed. -->
97
+ <!-- If this property is set, that means Visual Web Developer 2012 Express Edition is -->
98
+ <!-- installed on the system. -->
99
+ <Fragment>
100
+ <Property Id="VWD2012EXPRESS_IDE" Secure="yes">
101
+ <ComponentSearch Id="SearchForVwdExpressIde2012Component" Guid="92A0CBA0-BF39-422D-87FA-AB64564CD136" Type="file">
102
+ <FileSearch Id="VwdExpressIde2012" Name="vwdexpress.exe" />
103
+ </ComponentSearch>
104
+ </Property>
105
+ </Fragment>
106
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
107
+ <Fragment>
108
+ <CustomAction Id="VWD2012Setup" Property="VWD2012EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
109
+ <PropertyRef Id="VWD2012EXPRESS_IDE" />
110
+ <InstallExecuteSequence>
111
+ <Custom Action="VWD2012Setup" Before="InstallFinalize" Overridable="yes">VWD2012EXPRESS_IDE</Custom>
112
+ </InstallExecuteSequence>
113
+ </Fragment>
114
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
115
+ <Fragment>
116
+ <CustomAction Id="VWD2012InstallVSTemplates" Property="VWD2012EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
117
+ <PropertyRef Id="VWD2012EXPRESS_IDE" />
118
+ <InstallExecuteSequence>
119
+ <Custom Action="VWD2012InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD2012EXPRESS_IDE</Custom>
120
+ </InstallExecuteSequence>
121
+ </Fragment>
122
+
123
+ <!-- Indicates whether the Visual Studio 2012 Express IDE for Phone component is installed. -->
124
+ <Fragment>
125
+ <Property Id="VPD2012EXPRESS_IDE" Secure="yes">
126
+ <RegistrySearch Id="VPD2012ExpressForPhoneEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VPDExpress\11.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
127
+ </Property>
128
+ </Fragment>
129
+ <!-- Custom action definition to run VPDexpress.exe /setup -->
130
+ <Fragment>
131
+ <CustomAction Id="VPD2012Setup" Property="VPD2012EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
132
+ <PropertyRef Id="VPD2012EXPRESS_IDE" />
133
+ <InstallExecuteSequence>
134
+ <Custom Action="VPD2012Setup" Before="InstallFinalize" Overridable="yes">VPD2012EXPRESS_IDE</Custom>
135
+ </InstallExecuteSequence>
136
+ </Fragment>
137
+ <!-- Custom action definition to run VPDexpress.exe /InstallVSTemplates -->
138
+ <Fragment>
139
+ <CustomAction Id="VPD2012InstallVSTemplates" Property="VPD2012EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
140
+ <PropertyRef Id="VPD2012EXPRESS_IDE" />
141
+ <InstallExecuteSequence>
142
+ <Custom Action="VPD2012InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VPD2012EXPRESS_IDE</Custom>
143
+ </InstallExecuteSequence>
144
+ </Fragment>
145
+
146
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
147
+ <!-- Visual Studio 2012 standard or higher. If this property is set, that -->
148
+ <!-- means Visual Studio 2012 standard or higher is installed and the Visual -->
149
+ <!-- Web Developer language tools were installed as a part of VS 2012 setup. -->
150
+ <Fragment>
151
+ <Property Id="VS2012_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
152
+ <ComponentSearch Id="SearchForVWD2012ProjectSystemUnderVSSetup" Guid="03E73DF8-BED3-44BB-BE2E-BAC10FAE723E" />
153
+ <ComponentSearch Id="SearchForVWD2012ProjectSystemUnderVWDSetup" Guid="3D7D4A9F-E3D7-4F13-9907-AF4F3CD75D33" Type="directory" />
154
+ </Property>
155
+ </Fragment>
156
+
157
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
158
+ <!-- Visual Studio 2012 standard or higher. If this property is set, that -->
159
+ <!-- means Visual Studio 2012 standard or higher is installed and the Visual -->
160
+ <!-- C++ language tools were installed as a part of VS 2012 setup. -->
161
+ <Fragment>
162
+ <Property Id="VS2012_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
163
+ <RegistrySearch Id="SearchForVC2012ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VC" Name="ProductDir" Type="raw" />
164
+ </Property>
165
+ </Fragment>
166
+
167
+ <!-- Indicates whether the Visual Studio 2012 Team Test project system is installed -->
168
+ <Fragment>
169
+ <Property Id="VS2012_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
170
+ <RegistrySearch Id="SearchForVSTS2012TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
171
+ </Property>
172
+ </Fragment>
173
+
174
+ <!-- Indicates whether the Visual Studio 2012 Database project system is installed -->
175
+ <Fragment>
176
+ <Property Id="VS2012_IDE_DB_PROJECTSYSTEM_INSTALLED" Secure="yes">
177
+ <ComponentSearch Id="SearchForVS2012DBSystemUnderVSSetup" Guid="E781FFA7-55F5-4E8C-9275-7B7EF035B13B" />
178
+ </Property>
179
+ </Fragment>
180
+
181
+ <!-- Indicates whether the WiX project system is installed for VS2012 -->
182
+ <Fragment>
183
+ <Property Id="VS2012_IDE_WIX_PROJECTSYSTEM_INSTALLED" Secure="yes">
184
+ <!-- Component search for the .pkgdef file for VS2012 -->
185
+ <ComponentSearch Id="SearchForVS2012WixSystemUnderVSSetup" Guid="55489E7A-7DCA-5228-975E-39C51BE332D9" />
186
+ </Property>
187
+ </Fragment>
188
+
189
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
190
+ <Fragment>
191
+ <Property Id="VS2012_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
192
+ <RegistrySearch Id="SearchForVSTS2012ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
193
+ </Property>
194
+ </Fragment>
195
+
196
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
197
+ <Fragment>
198
+ <Property Id="VS2012_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
199
+ <RegistrySearch Id="SearchForVSTS2012FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\F#" Name="ProductDir" Type="raw" />
200
+ </Property>
201
+ </Fragment>
202
+
203
+ <!-- Indicates whether the Visual Studio Express for Windows IDE component is installed. -->
204
+ <!-- If this property is set, that means Visual Studio Express for Windows is installed -->
205
+ <!-- on the system. -->
206
+ <Fragment>
207
+ <Property Id="VS2012WINEXPRESS_IDE" Secure="yes">
208
+ <ComponentSearch Id="SearchForVS2012WinExpressIdeComponent" Guid="A7A5FD99-1DFE-4AA8-A563-4DF5E0DD89E1" Type="file">
209
+ <FileSearch Id="VS2012WinExpressIde" Name="vswinexpress.exe" />
210
+ </ComponentSearch>
211
+ </Property>
212
+ </Fragment>
213
+ <!-- Custom action definition to run vswinexpress.exe /setup -->
214
+ <Fragment>
215
+ <CustomAction Id="VS2012WinExpressSetup" Property="VS2012WINEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
216
+ <PropertyRef Id="VS2012WINEXPRESS_IDE" />
217
+ <InstallExecuteSequence>
218
+ <Custom Action="VS2012WinExpressSetup" Before="InstallFinalize" Overridable="yes">VS2012WINEXPRESS_IDE</Custom>
219
+ </InstallExecuteSequence>
220
+ </Fragment>
221
+ <!-- Custom action definition to run vswinexpress.exe /InstallVSTemplates -->
222
+ <Fragment>
223
+ <CustomAction Id="VS2012WinExpressInstallVSTemplates" Property="VS2012WINEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
224
+ <PropertyRef Id="VS2012WINEXPRESS_IDE" />
225
+ <InstallExecuteSequence>
226
+ <Custom Action="VS2012WinExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2012WINEXPRESS_IDE</Custom>
227
+ </InstallExecuteSequence>
228
+ </Fragment>
229
+
230
+ <!-- Indicates whether the Visual Studio Express for Windows Desktop IDE component is installed. -->
231
+ <!-- If this property is set, that means Visual Studio Express for Windows Desktop is installed -->
232
+ <!-- on the system. -->
233
+ <Fragment>
234
+ <Property Id="VS2012WDEXPRESS_IDE" Secure="yes">
235
+ <ComponentSearch Id="SearchForVS2012WDExpressIdeComponent" Guid="{55C6B9D6-A824-4AFC-8D08-20E581B6F42C}" Type="file">
236
+ <FileSearch Id="VS2012WDExpressIde" Name="WDExpress.exe" />
237
+ </ComponentSearch>
238
+ </Property>
239
+ </Fragment>
240
+ <!-- Custom action definition to run WDExpress.exe /setup -->
241
+ <Fragment>
242
+ <CustomAction Id="VS2012WDExpressSetup" Property="VS2012WDEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
243
+ <PropertyRef Id="VS2012WDEXPRESS_IDE" />
244
+ <InstallExecuteSequence>
245
+ <Custom Action="VS2012WDExpressSetup" Before="InstallFinalize" Overridable="yes">VS2012WDEXPRESS_IDE</Custom>
246
+ </InstallExecuteSequence>
247
+ </Fragment>
248
+ <!-- Custom action definition to run WDExpress.exe /InstallVSTemplates -->
249
+ <Fragment>
250
+ <CustomAction Id="VS2012WDExpressInstallVSTemplates" Property="VS2012WDEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
251
+ <PropertyRef Id="VS2012WDEXPRESS_IDE" />
252
+ <InstallExecuteSequence>
253
+ <Custom Action="VS2012WDExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2012WDEXPRESS_IDE</Custom>
254
+ </InstallExecuteSequence>
255
+ </Fragment>
256
+</Wix>
src/wixlib/VS2013.wxs
new
+253
@@ -0,0 +1,253 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2013_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS2013DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS2013ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS2013_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS2013DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS2013ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS2013_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS2013ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="12.0" Type="raw">
25
+ <DirectorySearch Id="VS2013XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS2013XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS2013_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS2013DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS2013ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS2013_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVS2013BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\12.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS2013_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS2013RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="12.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS2013DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS2013DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS2013Setup" Property="VS2013DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS2013DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS2013Setup" Before="InstallFinalize" Overridable="yes">VS2013DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS2013InstallVSTemplates" Property="VS2013DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS2013DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS2013InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2013DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
77
+ <!-- Visual Studio 2013 Pro or higher. If this property is set, that -->
78
+ <!-- means Visual Studio 2013 Pro or higher is installed and the Visual -->
79
+ <!-- C# language tools were installed as a part of VS 2013 setup. -->
80
+ <Fragment>
81
+ <Property Id="VS2013_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
82
+ <RegistrySearch Id="SearchForVCS2013ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VC#" Name="ProductDir" Type="raw" />
83
+ </Property>
84
+ </Fragment>
85
+
86
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
87
+ <!-- Visual Studio 2013 Pro or higher. If this property is set, that -->
88
+ <!-- means Visual Studio 2013 Pro or higher is installed and the Visual -->
89
+ <!-- Basic language tools were installed as a part of VS 2013 setup. -->
90
+ <Fragment>
91
+ <Property Id="VS2013_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
92
+ <RegistrySearch Id="SearchForVB2013ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VB" Name="ProductDir" Type="raw" />
93
+ </Property>
94
+ </Fragment>
95
+
96
+ <!-- Indicates whether the Visual Web Developer 2013 Express IDE component is installed. -->
97
+ <!-- If this property is set, that means Visual Web Developer 2013 Express Edition is -->
98
+ <!-- installed on the system. -->
99
+ <Fragment>
100
+ <Property Id="VWD2013EXPRESS_IDE" Secure="yes">
101
+ <ComponentSearch Id="SearchForVwdExpressIde2013Component" Guid="{04B98358-C73B-40F7-9946-AA80B316DA84}" Type="file">
102
+ <FileSearch Id="VwdExpressIde2013" Name="vwdexpress.exe" />
103
+ </ComponentSearch>
104
+ </Property>
105
+ </Fragment>
106
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
107
+ <Fragment>
108
+ <CustomAction Id="VWD2013Setup" Property="VWD2013EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
109
+ <PropertyRef Id="VWD2013EXPRESS_IDE" />
110
+ <InstallExecuteSequence>
111
+ <Custom Action="VWD2013Setup" Before="InstallFinalize" Overridable="yes">VWD2013EXPRESS_IDE</Custom>
112
+ </InstallExecuteSequence>
113
+ </Fragment>
114
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
115
+ <Fragment>
116
+ <CustomAction Id="VWD2013InstallVSTemplates" Property="VWD2013EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
117
+ <PropertyRef Id="VWD2013EXPRESS_IDE" />
118
+ <InstallExecuteSequence>
119
+ <Custom Action="VWD2013InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD2013EXPRESS_IDE</Custom>
120
+ </InstallExecuteSequence>
121
+ </Fragment>
122
+
123
+ <!-- Indicates whether the Visual Studio 2013 Express IDE for Phone component is installed. -->
124
+ <Fragment>
125
+ <Property Id="VPD2013EXPRESS_IDE" Secure="yes">
126
+ <RegistrySearch Id="VPD2013ExpressForPhoneEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VPDExpress\12.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
127
+ </Property>
128
+ </Fragment>
129
+ <!-- Custom action definition to run VPDexpress.exe /setup -->
130
+ <Fragment>
131
+ <CustomAction Id="VPD2013Setup" Property="VPD2013EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
132
+ <PropertyRef Id="VPD2013EXPRESS_IDE" />
133
+ <InstallExecuteSequence>
134
+ <Custom Action="VPD2013Setup" Before="InstallFinalize" Overridable="yes">VPD2013EXPRESS_IDE</Custom>
135
+ </InstallExecuteSequence>
136
+ </Fragment>
137
+ <!-- Custom action definition to run VPDexpress.exe /InstallVSTemplates -->
138
+ <Fragment>
139
+ <CustomAction Id="VPD2013InstallVSTemplates" Property="VPD2013EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
140
+ <PropertyRef Id="VPD2013EXPRESS_IDE" />
141
+ <InstallExecuteSequence>
142
+ <Custom Action="VPD2013InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VPD2013EXPRESS_IDE</Custom>
143
+ </InstallExecuteSequence>
144
+ </Fragment>
145
+
146
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
147
+ <!-- Visual Studio 2013 Pro or higher. If this property is set, that -->
148
+ <!-- means Visual Studio 2013 Pro or higher is installed and the Visual -->
149
+ <!-- Web Developer language tools were installed as a part of VS 2013 setup. -->
150
+ <Fragment>
151
+ <Property Id="VS2013_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
152
+ <ComponentSearch Id="SearchForVWD2013ProjectSystemUnderVSSetup" Guid="{CDA2DE5A-F6F4-48D0-B9BA-58CFD381143C}" />
153
+ <ComponentSearch Id="SearchForVWD2013ProjectSystemUnderVWDSetup" Guid="{C6E8D1B3-85F3-4F3A-A6AE-4166F917C9FD}" Type="directory" />
154
+ </Property>
155
+ </Fragment>
156
+
157
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
158
+ <!-- Visual Studio 2013 Pro or higher. If this property is set, that -->
159
+ <!-- means Visual Studio 2013 Pro or higher is installed and the Visual -->
160
+ <!-- C++ language tools were installed as a part of VS 2013 setup. -->
161
+ <Fragment>
162
+ <Property Id="VS2013_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
163
+ <RegistrySearch Id="SearchForVC2013ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VC" Name="ProductDir" Type="raw" />
164
+ </Property>
165
+ </Fragment>
166
+
167
+ <!-- Indicates whether the Visual Studio 2013 Team Test project system is installed -->
168
+ <Fragment>
169
+ <Property Id="VS2013_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
170
+ <RegistrySearch Id="SearchForVSTS2013TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
171
+ </Property>
172
+ </Fragment>
173
+
174
+ <!-- Indicates whether the Windows Installer XML project system is installed for VS2013 -->
175
+ <Fragment>
176
+ <Property Id="VS2013_IDE_WIX_PROJECTSYSTEM_INSTALLED" Secure="yes">
177
+ <!-- Component search for the .pkgdef file for VS2013 -->
178
+ <ComponentSearch Id="SearchForVS2013WixSystemUnderVSSetup" Guid="{768F32E1-BAAB-5203-822D-3BD85F9BD26E}" />
179
+ </Property>
180
+ </Fragment>
181
+
182
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
183
+ <Fragment>
184
+ <Property Id="VS2013_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
185
+ <RegistrySearch Id="SearchForVSTS2013ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
186
+ </Property>
187
+ </Fragment>
188
+
189
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
190
+ <Fragment>
191
+ <Property Id="VS2013_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
192
+ <RegistrySearch Id="SearchForVSTS2013FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\F#" Name="ProductDir" Type="raw" />
193
+ </Property>
194
+ </Fragment>
195
+
196
+ <!-- Indicates whether the Visual Studio Express for Windows IDE component is installed. -->
197
+ <!-- If this property is set, that means Visual Studio Express for Windows is installed -->
198
+ <!-- on the system. -->
199
+ <Fragment>
200
+ <Property Id="VS2013WINEXPRESS_IDE" Secure="yes">
201
+ <ComponentSearch Id="SearchForVS2013WinExpressIdeComponent" Guid="{5E7D5287-3ADA-4A8E-9953-C6B702BD1F01}" Type="file">
202
+ <FileSearch Id="VS2013WinExpressIde" Name="vswinexpress.exe" />
203
+ </ComponentSearch>
204
+ </Property>
205
+ </Fragment>
206
+
207
+ <!-- Custom action definition to run vswinexpress.exe /setup -->
208
+ <Fragment>
209
+ <CustomAction Id="VS2013WinExpressSetup" Property="VS2013WINEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
210
+ <PropertyRef Id="VS2013WINEXPRESS_IDE" />
211
+ <InstallExecuteSequence>
212
+ <Custom Action="VS2013WinExpressSetup" Before="InstallFinalize" Overridable="yes">VS2013WINEXPRESS_IDE</Custom>
213
+ </InstallExecuteSequence>
214
+ </Fragment>
215
+
216
+ <!-- Custom action definition to run vswinexpress.exe /InstallVSTemplates -->
217
+ <Fragment>
218
+ <CustomAction Id="VS2013WinExpressInstallVSTemplates" Property="VS2013WINEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
219
+ <PropertyRef Id="VS2013WINEXPRESS_IDE" />
220
+ <InstallExecuteSequence>
221
+ <Custom Action="VS2013WinExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2013WINEXPRESS_IDE</Custom>
222
+ </InstallExecuteSequence>
223
+ </Fragment>
224
+
225
+ <!-- Indicates whether the Visual Studio Express for Windows Desktop IDE component is installed. -->
226
+ <!-- If this property is set, that means Visual Studio Express for Windows Desktop is installed -->
227
+ <!-- on the system. -->
228
+ <Fragment>
229
+ <Property Id="VS2013WDEXPRESS_IDE" Secure="yes">
230
+ <ComponentSearch Id="SearchForVS2013WDExpressIdeComponent" Guid="{6C65247B-900C-45AD-8ED8-3F20E668348E}" Type="file">
231
+ <FileSearch Id="VS2013WDExpressIde" Name="WDExpress.exe" />
232
+ </ComponentSearch>
233
+ </Property>
234
+ </Fragment>
235
+
236
+ <!-- Custom action definition to run WDExpress.exe /setup -->
237
+ <Fragment>
238
+ <CustomAction Id="VS2013WDExpressSetup" Property="VS2013WDEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
239
+ <PropertyRef Id="VS2013WDEXPRESS_IDE" />
240
+ <InstallExecuteSequence>
241
+ <Custom Action="VS2013WDExpressSetup" Before="InstallFinalize" Overridable="yes">VS2013WDEXPRESS_IDE</Custom>
242
+ </InstallExecuteSequence>
243
+ </Fragment>
244
+
245
+ <!-- Custom action definition to run WDExpress.exe /InstallVSTemplates -->
246
+ <Fragment>
247
+ <CustomAction Id="VS2013WDExpressInstallVSTemplates" Property="VS2013WDEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
248
+ <PropertyRef Id="VS2013WDEXPRESS_IDE" />
249
+ <InstallExecuteSequence>
250
+ <Custom Action="VS2013WDExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2013WDEXPRESS_IDE</Custom>
251
+ </InstallExecuteSequence>
252
+ </Fragment>
253
+</Wix>
src/wixlib/VS2015.wxs
new
+187
@@ -0,0 +1,187 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2015_EXTENSIONS_DIR" Secure="yes">
8
+ <RegistrySearch Id="VS2015DevEnvForExtensionsSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
9
+ <DirectorySearch Id="VS2015ExtensionsPathSearch" Path="Extensions" Depth="1" />
10
+ </RegistrySearch>
11
+ </Property>
12
+ </Fragment>
13
+
14
+ <Fragment>
15
+ <Property Id="VS2015_PROJECTTEMPLATES_DIR" Secure="yes">
16
+ <RegistrySearch Id="VS2015DevEnvForProjectTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
17
+ <DirectorySearch Id="VS2015ProjectTemplatesPathSearch" Path="ProjectTemplates" Depth="1" />
18
+ </RegistrySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS2015_SCHEMAS_DIR" Secure="yes">
24
+ <RegistrySearch Id="VS2015ProductPathSearch" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="14.0" Type="raw">
25
+ <DirectorySearch Id="VS2015XmlPathSearch" Path="Xml" Depth="1">
26
+ <DirectorySearch Id="VS2015XmlSchemasPathSearch" Path="Schemas" Depth="1" />
27
+ </DirectorySearch>
28
+ </RegistrySearch>
29
+ </Property>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <Property Id="VS2015_ITEMTEMPLATES_DIR" Secure="yes">
34
+ <RegistrySearch Id="VS2015DevEnvForItemTemplatesSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="raw">
35
+ <DirectorySearch Id="VS2015ItemTemplatesPathSearch" Path="ItemTemplates" Depth="1" />
36
+ </RegistrySearch>
37
+ </Property>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <Property Id="VS2015_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
42
+ <RegistrySearch Id="SearchForVS2015BootstrapperPackageFolder" Root="HKLM" Key="Software\Microsoft\GenericBootstrapper\4.0" Name="Path" Type="raw" />
43
+ </Property>
44
+ </Fragment>
45
+
46
+ <Fragment>
47
+ <Property Id="VS2015_ROOT_FOLDER" Secure="yes">
48
+ <RegistrySearch Id="SearchForVS2015RootPath" Root="HKLM" Key="Software\Microsoft\VisualStudio\SxS\VS7" Name="14.0" Type="raw" />
49
+ </Property>
50
+ </Fragment>
51
+
52
+ <Fragment>
53
+ <Property Id="VS2015DEVENV" Secure="yes">
54
+ <RegistrySearch Id="VS2015DevEnvSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
55
+ </Property>
56
+ </Fragment>
57
+
58
+ <Fragment>
59
+ <CustomAction Id="VS2015Setup" Property="VS2015DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
60
+ <PropertyRef Id="VS2015DEVENV" />
61
+
62
+ <InstallExecuteSequence>
63
+ <Custom Action="VS2015Setup" Before="InstallFinalize" Overridable="yes">VS2015DEVENV</Custom>
64
+ </InstallExecuteSequence>
65
+ </Fragment>
66
+
67
+ <Fragment>
68
+ <CustomAction Id="VS2015InstallVSTemplates" Property="VS2015DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
69
+ <PropertyRef Id="VS2015DEVENV" />
70
+
71
+ <InstallExecuteSequence>
72
+ <Custom Action="VS2015InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2015DEVENV</Custom>
73
+ </InstallExecuteSequence>
74
+ </Fragment>
75
+
76
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
77
+ <!-- Visual Studio 2015 standard or higher. If this property is set, that -->
78
+ <!-- means Visual Studio 2015 standard or higher is installed and the Visual -->
79
+ <!-- C# language tools were installed as a part of VS 2015 setup. -->
80
+ <Fragment>
81
+ <Property Id="VS2015_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
82
+ <RegistrySearch Id="SearchForVCS2015ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VC#" Name="ProductDir" Type="raw" />
83
+ </Property>
84
+ </Fragment>
85
+
86
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
87
+ <!-- Visual Studio 2015 standard or higher. If this property is set, that -->
88
+ <!-- means Visual Studio 2015 standard or higher is installed and the Visual -->
89
+ <!-- Basic language tools were installed as a part of VS 2015 setup. -->
90
+ <Fragment>
91
+ <Property Id="VS2015_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes">
92
+ <RegistrySearch Id="SearchForVB2015ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VB" Name="ProductDir" Type="raw" />
93
+ </Property>
94
+ </Fragment>
95
+
96
+ <!-- Indicates whether the Visual Web Developer 2015 Express IDE component is installed. -->
97
+ <!-- If this property is set, that means Visual Web Developer 2015 Express Edition is -->
98
+ <!-- installed on the system. -->
99
+ <Fragment>
100
+ <Property Id="VWD2015EXPRESS_IDE" Secure="yes">
101
+ <RegistrySearch Id="VWD2015ExpressSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VWDExpress\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
102
+ </Property>
103
+ </Fragment>
104
+ <!-- Custom action definition to run vwdexpress.exe /setup -->
105
+ <Fragment>
106
+ <CustomAction Id="VWD2015Setup" Property="VWD2015EXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
107
+ <PropertyRef Id="VWD2015EXPRESS_IDE" />
108
+ <InstallExecuteSequence>
109
+ <Custom Action="VWD2015Setup" Before="InstallFinalize" Overridable="yes">VWD2015EXPRESS_IDE</Custom>
110
+ </InstallExecuteSequence>
111
+ </Fragment>
112
+ <!-- Custom action definition to run vwdexpress.exe /InstallVSTemplates -->
113
+ <Fragment>
114
+ <CustomAction Id="VWD2015InstallVSTemplates" Property="VWD2015EXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
115
+ <PropertyRef Id="VWD2015EXPRESS_IDE" />
116
+ <InstallExecuteSequence>
117
+ <Custom Action="VWD2015InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VWD2015EXPRESS_IDE</Custom>
118
+ </InstallExecuteSequence>
119
+ </Fragment>
120
+
121
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
122
+ <!-- Visual Studio 2015 standard or higher. If this property is set, that -->
123
+ <!-- means Visual Studio 2015 standard or higher is installed and the Visual -->
124
+ <!-- Web Developer language tools were installed as a part of VS 2015 setup. -->
125
+ <Fragment>
126
+ <Property Id="VS2015_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes">
127
+ <ComponentSearch Id="SearchForVWD2015ProjectSystemUnderVSSetup" Guid="274EB373-6B78-5EBD-8A6C-6D8094E58ECB" />
128
+ <ComponentSearch Id="SearchForVWD2015ProjectSystemUnderVWDSetup" Guid="71EBDA4A-4A15-426F-95C4-4FC051FD7AA4" Type="directory" />
129
+ </Property>
130
+ </Fragment>
131
+
132
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
133
+ <!-- Visual Studio 2015 standard or higher. If this property is set, that -->
134
+ <!-- means Visual Studio 2015 standard or higher is installed and the Visual -->
135
+ <!-- C++ language tools were installed as a part of VS 2015 setup. -->
136
+ <Fragment>
137
+ <Property Id="VS2015_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes">
138
+ <RegistrySearch Id="SearchForVC2015ProjectSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VC" Name="ProductDir" Type="raw" />
139
+ </Property>
140
+ </Fragment>
141
+
142
+ <!-- Indicates whether the Visual Studio 2015 Team Test project system is installed -->
143
+ <Fragment>
144
+ <Property Id="VS2015_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes">
145
+ <RegistrySearch Id="SearchForVSTS2015TestSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Projects\{3AC096D0-A1C2-E12C-1390-A8335801FDAB}" Name="Package" Type="raw" />
146
+ </Property>
147
+ </Fragment>
148
+
149
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
150
+ <Fragment>
151
+ <Property Id="VS2015_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes">
152
+ <RegistrySearch Id="SearchForVSTS2015ModelingSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Projects\{f088123c-0e9e-452a-89e6-6ba2f21d5cac}" Name="Package" Type="raw" />
153
+ </Property>
154
+ </Fragment>
155
+
156
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
157
+ <Fragment>
158
+ <Property Id="VS2015_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes">
159
+ <RegistrySearch Id="SearchForVSTS2015FSharpSystemUnderVSSetup" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\F#" Name="ProductDir" Type="raw" />
160
+ </Property>
161
+ </Fragment>
162
+
163
+ <!-- Indicates whether the Visual Studio Express for Windows IDE component is installed. -->
164
+ <!-- If this property is set, that means Visual Studio Express for Windows is installed -->
165
+ <!-- on the system. -->
166
+ <Fragment>
167
+ <Property Id="VS2015WINEXPRESS_IDE" Secure="yes">
168
+ <RegistrySearch Id="VS2015WinExpressSearch" Root="HKLM" Key="SOFTWARE\Microsoft\VSWinExpress\14.0\Setup\VS" Name="EnvironmentPath" Type="raw" />
169
+ </Property>
170
+ </Fragment>
171
+ <!-- Custom action definition to run vswinexpress.exe /setup -->
172
+ <Fragment>
173
+ <CustomAction Id="VS2015WinExpressSetup" Property="VS2015WINEXPRESS_IDE" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
174
+ <PropertyRef Id="VS2015WINEXPRESS_IDE" />
175
+ <InstallExecuteSequence>
176
+ <Custom Action="VS2015WinExpressSetup" Before="InstallFinalize" Overridable="yes">VS2015WINEXPRESS_IDE</Custom>
177
+ </InstallExecuteSequence>
178
+ </Fragment>
179
+ <!-- Custom action definition to run vswinexpress.exe /InstallVSTemplates -->
180
+ <Fragment>
181
+ <CustomAction Id="VS2015WinExpressInstallVSTemplates" Property="VS2015WINEXPRESS_IDE" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
182
+ <PropertyRef Id="VS2015WINEXPRESS_IDE" />
183
+ <InstallExecuteSequence>
184
+ <Custom Action="VS2015WinExpressInstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2015WINEXPRESS_IDE</Custom>
185
+ </InstallExecuteSequence>
186
+ </Fragment>
187
+</Wix>
src/wixlib/VS2017.wxs
new
+143
@@ -0,0 +1,143 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2017_ROOT_FOLDER" Secure="yes" />
8
+
9
+ <!-- Currently supported only on x86 -->
10
+ <CustomActionRef Id="VSFindInstances" />
11
+ </Fragment>
12
+
13
+ <Fragment>
14
+ <PropertyRef Id="VS2017_ROOT_FOLDER" />
15
+ <Property Id="VS2017_IDE_DIR" Secure="yes">
16
+ <DirectorySearch Id="VS2017DirectorySearch" Path="[VS2017_ROOT_FOLDER]">
17
+ <DirectorySearch Id="VS2017EnvironmentDirectorySearch" Path="Common7\IDE" Depth="1" />
18
+ </DirectorySearch>
19
+ </Property>
20
+ </Fragment>
21
+
22
+ <Fragment>
23
+ <Property Id="VS2017_EXTENSIONS_DIR" Secure="yes">
24
+ <DirectorySearchRef Id="VS2017EnvironmentDirectorySearch" Parent="VS2017DirectorySearch" Path="Common7\IDE">
25
+ <DirectorySearch Id="VS2017ExtensionsDirectorySearch" Path="Extensions" Depth="1" />
26
+ </DirectorySearchRef>
27
+ </Property>
28
+ </Fragment>
29
+
30
+ <Fragment>
31
+ <Property Id="VS2017_PROJECTTEMPLATES_DIR" Secure="yes">
32
+ <DirectorySearchRef Id="VS2017EnvironmentDirectorySearch" Parent="VS2017DirectorySearch" Path="Common7\IDE">
33
+ <DirectorySearch Id="VS2017ProjectTemplatesDirectorySearch" Path="ProjectTemplates" Depth="1" />
34
+ </DirectorySearchRef>
35
+ </Property>
36
+ </Fragment>
37
+
38
+ <Fragment>
39
+ <PropertyRef Id="VS2017_ROOT_FOLDER" />
40
+ <Property Id="VS2017_SCHEMAS_DIR" Secure="yes">
41
+ <DirectorySearch Id="VS2017XmlDirectorySearch" Path="[VS2017_ROOT_FOLDER]\Xml" Depth="1">
42
+ <DirectorySearch Id="VS2017XmlSchemasDirectorySearch" Path="Schemas" Depth="1" />
43
+ </DirectorySearch>
44
+ </Property>
45
+ </Fragment>
46
+
47
+ <Fragment>
48
+ <Property Id="VS2017_ITEMTEMPLATES_DIR" Secure="yes">
49
+ <DirectorySearchRef Id="VS2017EnvironmentDirectorySearch" Parent="VS2017DirectorySearch" Path="Common7\IDE">
50
+ <DirectorySearch Id="VS2017ItemTemplatesDirectorySearch" Path="ItemTemplates" Depth="1" />
51
+ </DirectorySearchRef>
52
+ </Property>
53
+ </Fragment>
54
+
55
+ <Fragment>
56
+ <PropertyRef Id="VS2017_ROOT_FOLDER" />
57
+ <Property Id="VS2017_BOOTSTRAPPER_PACKAGE_FOLDER" Secure="yes">
58
+ <DirectorySearch Id="VS2017SDKDirectorySearch" Path="[VS2017_ROOT_FOLDER]\SDK" Depth="1">
59
+ <DirectorySearch Id="SearchForVS2017BootstrapperPackageDirectory" Path="Bootstrapper" Depth="1" />
60
+ </DirectorySearch>
61
+ </Property>
62
+ </Fragment>
63
+
64
+ <Fragment>
65
+ <Property Id="VS2017DEVENV" Secure="yes">
66
+ <DirectorySearchRef Id="VS2017EnvironmentDirectorySearch" Parent="VS2017DirectorySearch" Path="Common7\IDE">
67
+ <FileSearch Id="VS2017DevEnvSearch" Name="devenv.exe" />
68
+ </DirectorySearchRef>
69
+ </Property>
70
+ </Fragment>
71
+
72
+ <Fragment>
73
+ <CustomAction Id="VS2017Setup" Property="VS2017DEVENV" ExeCommand="/setup" Execute="deferred" Return="ignore" Impersonate="no" />
74
+ <PropertyRef Id="VS2017DEVENV" />
75
+
76
+ <InstallExecuteSequence>
77
+ <Custom Action="VS2017Setup" Before="InstallFinalize" Overridable="yes">VS2017DEVENV</Custom>
78
+ </InstallExecuteSequence>
79
+ </Fragment>
80
+
81
+ <Fragment>
82
+ <CustomAction Id="VS2017InstallVSTemplates" Property="VS2017DEVENV" ExeCommand="/InstallVSTemplates" Execute="deferred" Return="ignore" Impersonate="no" />
83
+ <PropertyRef Id="VS2017DEVENV" />
84
+
85
+ <InstallExecuteSequence>
86
+ <Custom Action="VS2017InstallVSTemplates" Before="InstallFinalize" Overridable="yes">VS2017DEVENV</Custom>
87
+ </InstallExecuteSequence>
88
+ </Fragment>
89
+
90
+ <!-- Indicates whether the Visual C# project system is installed as a part of -->
91
+ <!-- Visual Studio 2017 standard or higher. If this property is set, that -->
92
+ <!-- means Visual Studio 2017 standard or higher is installed and the Visual -->
93
+ <!-- C# language tools were installed as a part of VS 2017 setup. -->
94
+ <Fragment>
95
+ <Property Id="VS2017_IDE_VCSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" />
96
+ <CustomActionRef Id="VSFindInstances" />
97
+ </Fragment>
98
+
99
+ <!-- Indicates whether the Visual Basic project system is installed as a part of -->
100
+ <!-- Visual Studio 2017 standard or higher. If this property is set, that -->
101
+ <!-- means Visual Studio 2017 standard or higher is installed and the Visual -->
102
+ <!-- Basic language tools were installed as a part of VS 2017 setup. -->
103
+ <Fragment>
104
+ <Property Id="VS2017_IDE_VB_PROJECTSYSTEM_INSTALLED" Secure="yes" />
105
+ <CustomActionRef Id="VSFindInstances" />
106
+ </Fragment>
107
+
108
+ <!-- Indicates whether the Visual Web Developer project system is installed as a part of -->
109
+ <!-- Visual Studio 2017 standard or higher. If this property is set, that -->
110
+ <!-- means Visual Studio 2017 standard or higher is installed and the Visual -->
111
+ <!-- Web Developer language tools were installed as a part of VS 2017 setup. -->
112
+ <Fragment>
113
+ <Property Id="VS2017_IDE_VWD_PROJECTSYSTEM_INSTALLED" Secure="yes" />
114
+ <CustomActionRef Id="VSFindInstances" />
115
+ </Fragment>
116
+
117
+ <!-- Indicates whether the Visual C++ project system is installed as a part of -->
118
+ <!-- Visual Studio 2017 standard or higher. If this property is set, that -->
119
+ <!-- means Visual Studio 2017 standard or higher is installed and the Visual -->
120
+ <!-- C++ language tools were installed as a part of VS 2017 setup. -->
121
+ <Fragment>
122
+ <Property Id="VS2017_IDE_VC_PROJECTSYSTEM_INSTALLED" Secure="yes" />
123
+ <CustomActionRef Id="VSFindInstances" />
124
+ </Fragment>
125
+
126
+ <!-- Indicates whether the Visual Studio 2017 Team Test project system is installed -->
127
+ <Fragment>
128
+ <Property Id="VS2017_IDE_VSTS_TESTSYSTEM_INSTALLED" Secure="yes" />
129
+ <CustomActionRef Id="VSFindInstances" />
130
+ </Fragment>
131
+
132
+ <!-- Indicates whether the Visual Studio Modeling project system is installed -->
133
+ <Fragment>
134
+ <Property Id="VS2017_IDE_MODELING_PROJECTSYSTEM_INSTALLED" Secure="yes" />
135
+ <CustomActionRef Id="VSFindInstances" />
136
+ </Fragment>
137
+
138
+ <!-- Indicates whether the Visual Studio F# project system is installed -->
139
+ <Fragment>
140
+ <Property Id="VS2017_IDE_FSHARP_PROJECTSYSTEM_INSTALLED" Secure="yes" />
141
+ <CustomActionRef Id="VSFindInstances" />
142
+ </Fragment>
143
+</Wix>
src/wixlib/VSExtension_Platform.wxi
new
+18
@@ -0,0 +1,18 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <?include caSuffix.wxi ?>
6
+ <Fragment>
7
+ <CustomAction Id="VSFindInstances$(var.Suffix)" BinaryKey="VSCA$(var.Suffix)" DllEntry="FindInstances" Execute="firstSequence" Return="check" SuppressModularization="yes" />
8
+ <InstallExecuteSequence>
9
+ <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
10
+ </InstallExecuteSequence>
11
+ <InstallUISequence>
12
+ <Custom Action="VSFindInstances$(var.Suffix)" Before="AppSearch" Overridable="yes" />
13
+ </InstallUISequence>
14
+ </Fragment>
15
+ <Fragment>
16
+ <Binary Id="VSCA$(var.Suffix)" SourceFile="vsca.dll" />
17
+ </Fragment>
18
+</Include>
src/wixlib/VSExtension_x86.wxs
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <?define platform=x86 ?>
7
+ <?include VSExtension_Platform.wxi ?>
8
+</Wix>
src/wixlib/VsixPackage.wxs
new
+61
@@ -0,0 +1,61 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment>
7
+ <Property Id="VS2010_VSIX_INSTALLER_PATH" Secure="yes">
8
+ <RegistrySearch Id="WixVS2010EnvDir" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VS" Name="EnvironmentDirectory" Type="directory">
9
+ <FileSearch Id="WixVS2010VsixInstaller" Name="VSIXInstaller.exe" />
10
+ </RegistrySearch>
11
+ </Property>
12
+
13
+ <Property Id="VS2012_VSIX_INSTALLER_PATH" Secure="yes">
14
+ <RegistrySearch Id="WixVS2012EnvDir" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\11.0\Setup\VS" Name="EnvironmentDirectory" Type="directory">
15
+ <FileSearch Id="WixVS2012VsixInstaller" Name="VSIXInstaller.exe" />
16
+ </RegistrySearch>
17
+ </Property>
18
+
19
+ <Property Id="VS2013_VSIX_INSTALLER_PATH" Secure="yes">
20
+ <RegistrySearch Id="WixVS2013EnvDir" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\12.0\Setup\VS" Name="EnvironmentDirectory" Type="directory">
21
+ <FileSearch Id="WixVS2013VsixInstaller" Name="VSIXInstaller.exe" />
22
+ </RegistrySearch>
23
+ </Property>
24
+
25
+ <!-- VS2015 is the latest VSIX at this point in time, so search for that by default. -->
26
+ <Property Id="VS2015_VSIX_INSTALLER_PATH" Secure="yes">
27
+ <RegistrySearch Id="WixVS2015EnvDir" Root="HKLM" Key="SOFTWARE\Microsoft\VisualStudio\14.0\Setup\VS" Name="EnvironmentDirectory" Type="directory">
28
+ <FileSearch Id="WixVS2015VsixInstaller" Name="VSIXInstaller.exe" />
29
+ </RegistrySearch>
30
+ </Property>
31
+
32
+ <Property Id="VS_VSIX_INSTALLER_PATH" Secure="yes" />
33
+
34
+ <!-- VWD2012 registers differently than the rest of Visual Studio, so search for it in the case VS2012 is missing. -->
35
+ <Property Id="VWD2012_VSIX_INSTALL_ROOT">
36
+ <RegistrySearch Id="Vwd2012Search" Root="HKLM" Key="SOFTWARE\Microsoft\VWDExpress\11.0\Setup\VS" Name="ProductDir" Type="raw" />
37
+ </Property>
38
+
39
+ <!-- VWD2013 registers differently than the rest of Visual Studio, so search for it in the case VS2013 is missing. -->
40
+ <Property Id="VWD2013_VSIX_INSTALL_ROOT">
41
+ <RegistrySearch Id="Vwd2013Search" Root="HKLM" Key="SOFTWARE\Microsoft\VWDExpress\12.0\Setup\VS" Name="ProductDir" Type="raw" />
42
+ </Property>
43
+
44
+ <!-- VWD2015 registers differently than the rest of Visual Studio, so search for it in the case VS2015 is missing. -->
45
+ <Property Id="VWD2015_VSIX_INSTALL_ROOT">
46
+ <RegistrySearch Id="Vwd2015Search" Root="HKLM" Key="SOFTWARE\Microsoft\VWDExpress\14.0\Setup\VS" Name="ProductDir" Type="raw" />
47
+ </Property>
48
+
49
+ <!-- Use the latest VS- or VWD-installed VSIXInstaller.exe. -->
50
+ <SetProperty Action="SetVS2015Vsix" Id="VS_VSIX_INSTALLER_PATH" Value="[VS2015_VSIX_INSTALLER_PATH]" Sequence="both" After="AppSearch">NOT VS_VSIX_INSTALLER_PATH AND VS2015_VSIX_INSTALLER_PATH</SetProperty>
51
+ <SetProperty Action="Vwd2015VsixWhenVSAbsent" Id="VS_VSIX_INSTALLER_PATH" Value="[VWD2015_VSIX_INSTALL_ROOT]\Common7\IDE\VSIXInstaller.exe" Sequence="both" After="SetVS2015Vsix">NOT VS_VSIX_INSTALLER_PATH AND VWD2015_VSIX_INSTALL_ROOT</SetProperty>
52
+
53
+ <SetProperty Action="SetVS2013Vsix" Id="VS_VSIX_INSTALLER_PATH" Value="[VS2013_VSIX_INSTALLER_PATH]" Sequence="both" After="Vwd2015VsixWhenVSAbsent">NOT VS_VSIX_INSTALLER_PATH AND VS2013_VSIX_INSTALLER_PATH</SetProperty>
54
+ <SetProperty Action="Vwd2013VsixWhenVSAbsent" Id="VS_VSIX_INSTALLER_PATH" Value="[VWD2013_VSIX_INSTALL_ROOT]\Common7\IDE\VSIXInstaller.exe" Sequence="both" After="SetVS2013Vsix">NOT VS_VSIX_INSTALLER_PATH AND VWD2013_VSIX_INSTALL_ROOT</SetProperty>
55
+
56
+ <SetProperty Action="SetVS2012Vsix" Id="VS_VSIX_INSTALLER_PATH" Value="[VS2012_VSIX_INSTALLER_PATH]" Sequence="both" After="Vwd2013VsixWhenVSAbsent">NOT VS_VSIX_INSTALLER_PATH AND VS2012_VSIX_INSTALLER_PATH</SetProperty>
57
+ <SetProperty Action="Vwd2012VsixWhenVSAbsent" Id="VS_VSIX_INSTALLER_PATH" Value="[VWD2012_VSIX_INSTALL_ROOT]\Common7\IDE\VSIXInstaller.exe" Sequence="both" After="SetVS2012Vsix">NOT VS_VSIX_INSTALLER_PATH AND VWD2012_VSIX_INSTALL_ROOT</SetProperty>
58
+
59
+ <SetProperty Action="SetVS2010Vsix" Id="VS_VSIX_INSTALLER_PATH" Value="[VS2010_VSIX_INSTALLER_PATH]" Sequence="both" After="Vwd2012VsixWhenVSAbsent">NOT VS_VSIX_INSTALLER_PATH AND VS2010_VSIX_INSTALLER_PATH</SetProperty>
60
+ </Fragment>
61
+</Wix>
src/wixlib/caSuffix.wxi
new
+28
@@ -0,0 +1,28 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5
+ <?ifndef platform ?>
6
+ <?error Required value "platform" not defined in include caSuffix.wxi ?>
7
+ <?endif ?>
8
+
9
+ <?ifdef Suffix ?>
10
+ <?undef Suffix ?>
11
+ <?undef DeferredSuffix ?>
12
+ <?endif ?>
13
+
14
+ <?if $(var.platform)="x86" ?>
15
+ <?define Suffix="" ?>
16
+ <?define DeferredSuffix="" ?>
17
+ <?endif ?>
18
+
19
+ <?if $(var.platform)="x64" ?>
20
+ <?define Suffix="_x64" ?>
21
+ <?define DeferredSuffix="_64" ?>
22
+ <?endif ?>
23
+
24
+ <?if $(var.platform)="arm" ?>
25
+ <?define Suffix="_ARM" ?>
26
+ <?define DeferredSuffix="_ARM" ?>
27
+ <?endif ?>
28
+</Include>
src/wixlib/packages.config
new
+5
@@ -0,0 +1,5 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<packages>
3
+ <package id="Nerdbank.GitVersioning" version="2.0.41" developmentDependency="true" />
4
+ <package id="WixToolset.Core.InternalPackage" version="4.0.15" targetFramework="net40" developmentDependency="true" />
5
+</packages>
\ No newline at end of file
src/wixlib/vs.wixproj
new
+65
@@ -0,0 +1,65 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
5
+ <Import Project="..\..\packages\WixToolset.Core.InternalPackage.4.0.15\build\WixToolset.Core.InternalPackage.props" Condition="Exists('..\..\packages\WixToolset.Core.InternalPackage.4.0.15\build\WixToolset.Core.InternalPackage.props')" />
6
+ <Import Project="..\FindLocalWix.props" />
7
+
8
+ <PropertyGroup>
9
+ <ProjectGuid>{14345C9D-8AF8-435A-BB1B-E067CE7EB321}</ProjectGuid>
10
+ <OutputName>vs</OutputName>
11
+ <OutputType>Library</OutputType>
12
+ <BindFiles>true</BindFiles>
13
+ <Pedantic>true</Pedantic>
14
+ <Cultures>en-us</Cultures>
15
+ </PropertyGroup>
16
+
17
+ <ItemGroup>
18
+ <Compile Include="HTML_Help_Registration__RTL_X86.wxs" />
19
+ <Compile Include="Vs2003.wxs" />
20
+ <Compile Include="Vs2005.wxs" />
21
+ <Compile Include="Vs2008.wxs" />
22
+ <Compile Include="Vs2010.wxs" />
23
+ <Compile Include="Vs11.wxs" />
24
+ <Compile Include="Vs2012.wxs" />
25
+ <Compile Include="Vs2013.wxs" />
26
+ <Compile Include="VS14.wxs" />
27
+ <Compile Include="VS2015.wxs" />
28
+ <Compile Include="VS2017.wxs" />
29
+ <Compile Include="VSExtension_x86.wxs" />
30
+ <Compile Include="VsixPackage.wxs" />
31
+ <Compile Include="vs2005\vs2005_VSIPCC_Collection_Files_RTL.wxs" />
32
+ <Compile Include="vs2008\vs2008_VSIPCC_Collection_Files_RTL.wxs" />
33
+ </ItemGroup>
34
+
35
+ <ItemGroup>
36
+ <Folder Include="vs2005\" />
37
+ <Folder Include="vs2008\" />
38
+ </ItemGroup>
39
+
40
+ <ItemGroup>
41
+ <None Include="packages.config" />
42
+ </ItemGroup>
43
+
44
+ <ItemGroup>
45
+ <ProjectReference Include="..\ca\vsca.vcxproj">
46
+ <Name>vsca</Name>
47
+ <Project>{45308b85-0628-4978-8fc8-6ad9e1ad5949}</Project>
48
+ </ProjectReference>
49
+ </ItemGroup>
50
+
51
+ <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' AND Exists('$(WixTargetsPath)') " />
52
+ <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets') " />
53
+ <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
54
+ <Error Text="FG-WiX or WiX Toolset build tools (v3.11 or later) must be installed to build this project. To download FG-WiX, go to https://www.firegiant.com/downloads/. To download the WiX Toolset, go to http://wixtoolset.org/releases/." />
55
+ </Target>
56
+
57
+ <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
58
+ <PropertyGroup>
59
+ <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
60
+ </PropertyGroup>
61
+ <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.0.41\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.0.41\build\Nerdbank.GitVersioning.targets'))" />
62
+ <Error Condition="!Exists('..\..\packages\WixToolset.Core.InternalPackage.4.0.15\build\WixToolset.Core.InternalPackage.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.Core.InternalPackage.4.0.15\build\WixToolset.Core.InternalPackage.props'))" />
63
+ </Target>
64
+ <Import Project="..\..\packages\Nerdbank.GitVersioning.2.0.41\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.0.41\build\Nerdbank.GitVersioning.targets')" />
65
+</Project>
src/wixlib/vs2005/VS2005_VSIPCC_Collection_Files_RTL.wxs
new
+64
@@ -0,0 +1,64 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment Id="VS2005_Namespace">
7
+ <DirectoryRef Id="VSIPCC">
8
+ <Component Id="VSIPCC_Reg" Guid="96F72137-191F-4120-A2FA-9DA8F6C2C993" KeyPath="yes">
9
+ <CreateFolder />
10
+ <RegistryValue Id="_FldbVs8_RegFile_15039_________00000" Root="HKLM" Key="SOFTWARE\Microsoft\MSDN\8.0\Help\0x0409\{F658C410-5D42-41a9-AB6C-83E8FE395595}" Name="Filename" Type="string" Value="ms-help://MS.VSIPCC.v80" />
11
+ </Component>
12
+ <Directory Id="vsipcc_v8.0" Name="v8.0" FileSource="$(sys.SOURCEFILEDIR)\Redist">
13
+ <Component Id="vsipcc_collection________" Guid="454FF049-0B57-4927-8A0C-AA10608A480C">
14
+ <File Id="FL_vsipcc_reg_hxs_86878________" Name="vsipcc_reg.hxs" KeyPath="yes" />
15
+ <File Id="FL_vsipcc_hxc_86879________" Name="vsipcc.hxc" />
16
+ <File Id="FL_vsipcc_hxt_86880________" Name="vsipcc.hxt" />
17
+ <File Id="FL_vsipccALinks_hxk_86881________" Name="vsipccALinks.hxk" />
18
+ <File Id="FL_vsipccBLinks_hxk_86882________" Name="vsipccBLinks.hxk" />
19
+ <File Id="FL_vsipccFLinks_hxk_86885________" Name="vsipccFLinks.hxk" />
20
+ <File Id="FL_vsipccKLinks_hxk_86886________" Name="vsipccKLinks.hxk" />
21
+ <File Id="FL_vsipccNamedURLs_hxk_86888________.3643236F_FC70_11D3_A536_0090278A1BB" Name="vsipccNamedURLs.hxk" />
22
+ <File Id="FL_vsipccSlinks_hxk_93825________" Name="vsipccSlinks.hxk" />
23
+ <File Id="FL_VsipCCSamples_HxK_103959________" Name="VsipCCSamples.HxK" />
24
+ </Component>
25
+ </Directory>
26
+ </DirectoryRef>
27
+ <CustomAction Id="CA_HxMerge_VSIPCC_VSCC" Return="ignore" Execute="commit" Impersonate="no" BinaryKey="BIN_File_60377" ExeCommand="ms-help://MS.VSCC.v80" />
28
+ <CustomAction Id="CA_HxMerge_VSIPCC_VSExpCC" Return="ignore" Execute="commit" Impersonate="no" BinaryKey="BIN_File_60377" ExeCommand="ms-help://MS.VSExpressCC.v80" />
29
+ <InstallExecuteSequence>
30
+ <Custom Action="CA_HxMerge_VSIPCC_VSCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8"/>
31
+ <Custom Action="CA_HxMerge_VSIPCC_VSExpCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8"/>
32
+ </InstallExecuteSequence>
33
+ <Binary Id="BIN_File_60377" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_File_60377.dll" />
34
+ <CustomTable Id="HelpPlugin">
35
+ <Row>
36
+ <Data Column="HelpNamespace_">MS_VSIPCC_v80</Data>
37
+ <Data Column="HelpNamespace_Parent">MS_VSCC_v80</Data>
38
+ <Data Column="File_HxT">FL_vsipcc_hxt_86880________</Data>
39
+ <Data Column="File_HxA" />
40
+ <Data Column="File_ParentHxT" />
41
+ </Row>
42
+ <Row>
43
+ <Data Column="HelpNamespace_">MS_VSIPCC_v80</Data>
44
+ <Data Column="HelpNamespace_Parent">MS_VSExpressCC_v80</Data>
45
+ <Data Column="File_HxT">FL_vsipcc_hxt_86880________</Data>
46
+ <Data Column="File_HxA" />
47
+ <Data Column="File_ParentHxT" />
48
+ </Row>
49
+ </CustomTable>
50
+ <CustomTable Id="HelpNamespace">
51
+ <Row>
52
+ <Data Column="NamespaceKey">MS_VSIPCC_v80</Data>
53
+ <Data Column="NamespaceName">MS.VSIPCC.v80</Data>
54
+ <Data Column="File_Collection">FL_vsipcc_hxc_86879________</Data>
55
+ <Data Column="Description">VSIP Documentation</Data>
56
+ </Row>
57
+ </CustomTable>
58
+
59
+ <ComponentGroup Id="Help2_VS2005_Namespace_Components">
60
+ <ComponentRef Id="VSIPCC_Reg"/>
61
+ <ComponentRef Id="vsipcc_collection________"/>
62
+ </ComponentGroup>
63
+ </Fragment>
64
+</Wix>
src/wixlib/vs2005/redist/BIN_File_60377.dll
Binary files /dev/null and b/src/wixlib/vs2005/redist/BIN_File_60377.dll differ
src/wixlib/vs2005/redist/vsipCCSamples.HxK
new
+14
@@ -0,0 +1,14 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "Samples"
6
+ Id = "VsipCCSamples"
7
+ AutoInclude = "Yes"
8
+ Merge = "Yes"
9
+ Sort = "Yes"
10
+ Title = "Samples"
11
+ Visible = "No"
12
+ LangId = "1033"
13
+ >
14
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2005/redist/vsipcc.hxc
new
+33
@@ -0,0 +1,33 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpCollection>
3
+<HelpCollection
4
+ DTDVersion = "1.0"
5
+ Id = "vsipcc.8.0"
6
+ FileVersion = "8.0.41025.0"
7
+ LangId = "1033"
8
+ Title = "Microsoft VSIP Combined Help Collection"
9
+ Copyright = "Copyright (c) 2005 Microsoft Corporation. All Rights Reserved."
10
+ >
11
+ <TOCDef File = "vsipcc.HxT" Id = "InsertTOC:VSIPCC" />
12
+ <KeywordIndexDef File = "vsipccALinks.HxK"/>
13
+ <KeywordIndexDef File = "vsipccBLinks.HxK"/>
14
+ <KeywordIndexDef File = "vsipccCLinks.HxK"/>
15
+ <KeywordIndexDef File = "vsipccFLinks.HxK"/>
16
+ <KeywordIndexDef File = "vsipccKLinks.HxK"/>
17
+ <KeywordIndexDef File = "vsipccSLinks.HxK"/>
18
+ <KeywordIndexDef File = "vsipccNamedUrls.HxK"/>
19
+ <KeywordIndexDef File= "VsipCCSamples.HxK" />
20
+
21
+ <ItemMoniker Name = "!DefaultNamedUrlIndex" ProgId = "HxDs.HxIndex" InitData = "VsccNamedUrls"/>
22
+ <ItemMoniker Name = "!SampleInfo" ProgId = "HxDs.HxSampleCollection" InitData = "Samples"/>
23
+ <ItemMoniker Name = "!DefaultTOC" ProgId = "HxDs.HxHierarchy" InitData = "TOC"/>
24
+ <ItemMoniker Name = "!DefaultFullTextSearch" ProgId = "HxDs.HxFullTextSearch" InitData = ""/>
25
+ <ItemMoniker Name = "!DefaultAssociativeIndex" ProgId = "HxDs.HxIndex" InitData = "A"/>
26
+ <ItemMoniker Name = "!DefaultDynamicLinkIndex" ProgId = "HxDs.HxIndex" InitData = "B"/>
27
+ <ItemMoniker Name = "!DefaultCodeIndex" ProgId = "HxDs.HxIndex" InitData = "C"/>
28
+ <ItemMoniker Name = "!DefaultContextWindowIndex" ProgId = "HxDs.HxIndex" InitData = "F"/>
29
+ <ItemMoniker Name = "!DefaultKeywordIndex" ProgId = "HxDs.HxIndex" InitData = "K"/>
30
+ <ItemMoniker Name = "!DefaultSearchWindowIndex" ProgId = "HxDs.HxIndex" InitData = "S"/>
31
+ <ItemMoniker Name = "!DefaultSampleIndex" ProgId="HxDs.HxIndex" InitData="Samples" />
32
+</HelpCollection>
33
+
src/wixlib/vs2005/redist/vsipcc.hxt
new
+15
@@ -0,0 +1,15 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpTOC>
3
+<HelpTOC
4
+ DTDVersion = "1.0"
5
+ Id = "vsipcc_TOC"
6
+ FileVersion = "8.0.0.0"
7
+ LangId = "1033"
8
+ ParentNodeIcon = "Book"
9
+ PluginStyle = "Flat"
10
+ >
11
+ <HelpTOCNode Id = "InsertTOC:VSIP" NodeType = "TOC"/>
12
+ <HelpTOCNode Id = "InsertTOC:Partner" NodeType = "TOC"/>
13
+</HelpTOC>
14
+
15
+
src/wixlib/vs2005/redist/vsipccALinks.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "A"
6
+ Id = "vsipcc8.0_ALinks"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "HxLink Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2005/redist/vsipccBLinks.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "B"
6
+ Id = "vsipcc8.0_BLinks"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "Dynamic Link Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
src/wixlib/vs2005/redist/vsipccFLinks.hxk
new
+14
@@ -0,0 +1,14 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "F"
6
+ Id = "vsipcc8.0_FLinks"
7
+ AutoInclude = "Yes"
8
+ Merge = "Yes"
9
+ Sort = "Yes"
10
+ Title = "Dynamic Help and F1 Index"
11
+ Visible = "No"
12
+ LangId = "1033"
13
+ >
14
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2005/redist/vsipccKLinks.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "K"
6
+ Id = "vsipcc8.0_KLinks"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "Keyword Index"
10
+ Visible = "Yes"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2005/redist/vsipccNamedURLs.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "VsipccNamedUrls"
6
+ Id = "VsipccNamedUrls"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "VSIPCC NamedUrl Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2005/redist/vsipccSlinks.hxk
new
+14
@@ -0,0 +1,14 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "S"
6
+ Id = "vsipcc8.0_SLinks"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "Search Enhancement Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
14
+
src/wixlib/vs2005/redist/vsipcc_reg.hxs
Binary files /dev/null and b/src/wixlib/vs2005/redist/vsipcc_reg.hxs differ
src/wixlib/vs2008/VS2008_VSIPCC_Collection_Files_RTL.wxs
new
+61
@@ -0,0 +1,61 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <Fragment Id="VS2008_Namespace">
7
+ <Binary Id="BIN_435439_x86_enu" SourceFile="$(sys.SOURCEFILEDIR)\Redist\BIN_435439_x86_enu.dll" />
8
+ <CustomAction Id="CA_ScheduleExtHelpPlugin_VSCC_VSIPCC" BinaryKey="BIN_435439_x86_enu" DllEntry="ScheduleExtHelpPlugin" Return="ignore" />
9
+ <CustomAction Id="CA_ExtHelpPlugin" BinaryKey="BIN_435439_x86_enu" DllEntry="ExtHelpPluginAction" Execute="deferred" Impersonate="no" />
10
+
11
+ <DirectoryRef Id="VSIPCC">
12
+ <Component Id="VSIPCC_Reg_27501" Guid="{7C32E9FB-9C4D-416B-8ACC-9D487ED0ADBD}" KeyPath="yes">
13
+ <CreateFolder Directory="VSIPCC" />
14
+ <RegistryValue Id="reg7291AF922BB02FD23E15437538DF9347" Root="HKLM" Key="SOFTWARE\Microsoft\MSDN\9.0\Help\0x0409\{F658C410-5D42-41a9-AB6C-83E8FE395595}" Name="Filename" Value="ms-help://MS.VSIPCC.v90" Type="string" />
15
+ </Component>
16
+ <Directory Id="vsipcc_v9.0" Name="v9.0" FileSource="$(sys.SOURCEFILEDIR)\Redist">
17
+ <Component Id="vsipcc_collection_25097" Guid="{D419D13C-D6D8-4E2A-A3EF-B26398D36524}">
18
+ <File Id="FL_vsipcc_reg_hxs_86878_86878_cn_ln" Name="vsipcc_reg.hxs" KeyPath="yes" Vital="no"/>
19
+ <File Id="FL_vsipcc_hxc_86879_86879_cn_ln" Name="_vsipcc90.hxc" Vital="no"/>
20
+ <File Id="FL_vsipcc_hxt_86880_86880_cn_ln" Name="_vsipcc90.hxt" Vital="no"/>
21
+ <File Id="FL_vsipccALinks_hxk_86881_86881_cn_ln" Name="_ALinks.hxk" Vital="no"/>
22
+ <File Id="FL_vsipccBLinks_hxk_86882_86882_cn_ln" Name="_BLinks.hxk" Vital="no"/>
23
+ <File Id="FL_vsipccCLinks_hxk_cn_ln" Name="_CLinks.hxk" Vital="no"/>
24
+ <File Id="FL_vsipccFLinks_hxk_86885_86885_cn_ln" Name="_FLinks.hxk" Vital="no"/>
25
+ <File Id="FL_vsipccKLinks_hxk_86886_86886_cn_ln" Name="_KLinks.hxk" Vital="no"/>
26
+ <File Id="FL_vsipccNamedURLs_hxk_86888_86888_cn_ln" Name="_vsipcc_namedUrls.hxk" Vital="no"/>
27
+ <File Id="FL_vsipccSlinks_hxk_93825_93825_cn_ln" Name="_SLinks.hxk" Vital="no"/>
28
+ <File Id="FL_VsipCCSamples_HxK_103959_103959_cn_ln" Name="_vsipcc_samples.HxK" Vital="no"/>
29
+ </Component>
30
+ </Directory>
31
+ </DirectoryRef>
32
+ <CustomTable Id="HelpNamespace">
33
+ <Row>
34
+ <Data Column="NamespaceKey">MS.VSIPCC.v90</Data>
35
+ <Data Column="NamespaceName">MS.VSIPCC.v90</Data>
36
+ <Data Column="File_Collection">FL_vsipcc_hxc_86879_86879_cn_ln</Data>
37
+ <Data Column="Description">VSIP Documentation</Data>
38
+ </Row>
39
+ </CustomTable>
40
+ <CustomTable Id="HelpPlugin">
41
+ <Row>
42
+ <Data Column="HelpNamespace_">MS.VSIPCC.v90</Data>
43
+ <Data Column="HelpNamespace_Parent">MS.VSCC.v90</Data>
44
+ <Data Column="File_HxT">FL_vsipcc_hxt_86880_86880_cn_ln</Data>
45
+ <Data Column="File_HxA" />
46
+ <Data Column="File_ParentHxT" />
47
+ </Row>
48
+ </CustomTable>
49
+ <Property Id="EXTERNALPLUGINLIST" Value="MS.VSCC.v90;MS.VSIPCC.v90" />
50
+ <Property Id="DirectoryTable_x86" Value="DirectoryTable" />
51
+ <Property Id="HHFilterTable" Value="HHFilterTable" />
52
+ <InstallExecuteSequence>
53
+ <Custom Action="CA_ScheduleExtHelpPlugin_VSCC_VSIPCC" After="CA_RegisterMicrosoftHelp.3643236F_FC70_11D3_A536_0090278A1BB8">Not Installed</Custom>
54
+ </InstallExecuteSequence>
55
+
56
+ <ComponentGroup Id="Help2_VS2008_Namespace_Components">
57
+ <ComponentRef Id="VSIPCC_Reg_27501"/>
58
+ <ComponentRef Id="vsipcc_collection_25097"/>
59
+ </ComponentGroup>
60
+ </Fragment>
61
+</Wix>
src/wixlib/vs2008/redist/BIN_435439_x86_enu.dll
Binary files /dev/null and b/src/wixlib/vs2008/redist/BIN_435439_x86_enu.dll differ
src/wixlib/vs2008/redist/_ALinks.hxk
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex DTDVersion = "1.0"
4
+ Name="A"
5
+ Id = "_ALinks"
6
+ Merge="Yes"
7
+ Sort="Yes"
8
+ Title="A-link Index"
9
+ Visible="No">
10
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_BLinks.hxk
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex DTDVersion = "1.0"
4
+ Name="B"
5
+ Id = "_BLinks"
6
+ Merge="Yes"
7
+ Sort="Yes"
8
+ Title="B-link Index"
9
+ Visible="No">
10
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_CLinks.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "C"
6
+ Id = "_CLinks"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "Code Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
src/wixlib/vs2008/redist/_FLinks.hxk
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex DTDVersion = "1.0"
4
+ Name="F"
5
+ Id = "_FLinks"
6
+ Merge="Yes"
7
+ Sort="Yes"
8
+ Title="F-link Index"
9
+ Visible="No">
10
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_KLinks.hxk
new
+10
@@ -0,0 +1,10 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex Name = "K"
4
+ Id = "_KLinks"
5
+ DTDVersion = "1.0"
6
+ Merge="Yes"
7
+ Sort="Yes"
8
+ Title="Keyword Index"
9
+ Visible="Yes">
10
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_SLinks.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name="S"
6
+ Id = "_SLinks"
7
+ AutoInclude = "Yes"
8
+ Merge="Yes"
9
+ Sort="Yes"
10
+ Title="Search Index"
11
+ Visible="No"
12
+ LangId = "1033">
13
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_vsipcc90.hxc
new
+33
@@ -0,0 +1,33 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpCollection>
3
+<HelpCollection
4
+ DTDVersion = "1.0"
5
+ Id = "vsipcc.9.0"
6
+ FileVersion = "9.0.20220.0"
7
+ LangId = "1033"
8
+ Title = "Visual Studio Orcas Partner Documentation"
9
+ Copyright = "Copyright (c) 2007 Microsoft Corporation. All Rights Reserved."
10
+ >
11
+ <TOCDef File = "_vsipcc90.HxT" Id = "InsertTOC:VSIPCC" />
12
+ <KeywordIndexDef File = "_ALinks.HxK"/>
13
+ <KeywordIndexDef File = "_BLinks.HxK"/>
14
+ <KeywordIndexDef File = "_CLinks.HxK"/>
15
+ <KeywordIndexDef File = "_FLinks.HxK"/>
16
+ <KeywordIndexDef File = "_KLinks.HxK"/>
17
+ <KeywordIndexDef File = "_SLinks.HxK"/>
18
+ <KeywordIndexDef File = "_vsipcc_NamedUrls.HxK"/>
19
+ <KeywordIndexDef File= "_VsipCC_Samples.HxK" />
20
+
21
+ <ItemMoniker Name = "!DefaultNamedUrlIndex" ProgId = "HxDs.HxIndex" InitData = "VsccNamedUrls"/>
22
+ <ItemMoniker Name = "!SampleInfo" ProgId = "HxDs.HxSampleCollection" InitData = "Samples"/>
23
+ <ItemMoniker Name = "!DefaultTOC" ProgId = "HxDs.HxHierarchy" InitData = "TOC"/>
24
+ <ItemMoniker Name = "!DefaultFullTextSearch" ProgId = "HxDs.HxFullTextSearch" InitData = ""/>
25
+ <ItemMoniker Name = "!DefaultAssociativeIndex" ProgId = "HxDs.HxIndex" InitData = "A"/>
26
+ <ItemMoniker Name = "!DefaultDynamicLinkIndex" ProgId = "HxDs.HxIndex" InitData = "B"/>
27
+ <ItemMoniker Name = "!DefaultCodeIndex" ProgId = "HxDs.HxIndex" InitData = "C"/>
28
+ <ItemMoniker Name = "!DefaultContextWindowIndex" ProgId = "HxDs.HxIndex" InitData = "F"/>
29
+ <ItemMoniker Name = "!DefaultKeywordIndex" ProgId = "HxDs.HxIndex" InitData = "K"/>
30
+ <ItemMoniker Name = "!DefaultSearchWindowIndex" ProgId = "HxDs.HxIndex" InitData = "S"/>
31
+ <ItemMoniker Name = "!DefaultSampleIndex" ProgId="HxDs.HxIndex" InitData="Samples" />
32
+</HelpCollection>
33
+
src/wixlib/vs2008/redist/_vsipcc90.hxt
new
+15
@@ -0,0 +1,15 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpTOC>
3
+<HelpTOC
4
+ DTDVersion = "1.0"
5
+ Id = "vsipcc_TOC"
6
+ FileVersion = "9.0.20220.0"
7
+ LangId = "1033"
8
+ ParentNodeIcon = "Book"
9
+ PluginStyle = "Flat"
10
+ >
11
+ <HelpTOCNode Id = "InsertTOC:VSIP" NodeType = "TOC"/>
12
+ <HelpTOCNode Id = "InsertTOC:Partner" NodeType = "TOC"/>
13
+</HelpTOC>
14
+
15
+
src/wixlib/vs2008/redist/_vsipcc_namedUrls.hxk
new
+13
@@ -0,0 +1,13 @@
1
+<?xml version="1.0"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "VsipccNamedUrls"
6
+ Id = "VsipccNamedUrls"
7
+ Merge = "Yes"
8
+ Sort = "Yes"
9
+ Title = "VSIPCC NamedUrl Index"
10
+ Visible = "No"
11
+ LangId = "1033"
12
+ >
13
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/_vsipcc_samples.HxK
new
+14
@@ -0,0 +1,14 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<!DOCTYPE HelpIndex>
3
+<HelpIndex
4
+ DTDVersion = "1.0"
5
+ Name = "Samples"
6
+ Id = "VsipCCSamples"
7
+ AutoInclude = "Yes"
8
+ Merge = "Yes"
9
+ Sort = "Yes"
10
+ Title = "Samples"
11
+ Visible = "No"
12
+ LangId = "1033"
13
+ >
14
+</HelpIndex>
\ No newline at end of file
src/wixlib/vs2008/redist/vsipcc_reg.hxs
Binary files /dev/null and b/src/wixlib/vs2008/redist/vsipcc_reg.hxs differ