@joebigelow / wix-1 / commits / f729d16a

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) &gt; 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