Initial code commit
This commit is contained in:
Родитель
3540e7467e
Коммит
c8f39be3f8
|
@ -0,0 +1,73 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.27130.2003
|
||||||
|
MinimumVisualStudioVersion = 15.0.26124.0
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "utilca", "src\ca\utilca.vcxproj", "{076018F7-19BD-423A-ABBF-229273DA08D8}"
|
||||||
|
EndProject
|
||||||
|
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "util", "src\wixlib\util.wixproj", "{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.Util.wixext", "src\wixext\WixToolset.Util.wixext.csproj", "{6CF033EB-0A39-4AC6-9D41-9BD506352045}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.Util", "src\test\WixToolsetTest.Util\WixToolsetTest.Util.csproj", "{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Debug|x64.ActiveCfg = Debug|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Release|x64.ActiveCfg = Release|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{076018F7-19BD-423A-ABBF-229273DA08D8}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Debug|x86.ActiveCfg = Debug|x86
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Debug|x86.Build.0 = Debug|x86
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Release|Any CPU.ActiveCfg = Release|x86
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Release|x64.Build.0 = Release|x64
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Release|x86.ActiveCfg = Release|x86
|
||||||
|
{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}.Release|x86.Build.0 = Release|x86
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{6CF033EB-0A39-4AC6-9D41-9BD506352045}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{D5D34EC4-AF91-4B11-AC0A-FA5242AE924B}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {E4566A6B-47D0-4EA0-989A-D763AC39105D}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -0,0 +1,13 @@
|
||||||
|
@setlocal
|
||||||
|
@pushd %~dp0
|
||||||
|
|
||||||
|
nuget restore
|
||||||
|
|
||||||
|
msbuild -p:Configuration=Release -t:Restore
|
||||||
|
|
||||||
|
msbuild -p:Configuration=Release src\test\WixToolsetTest.Util\WixToolsetTest.Util.csproj
|
||||||
|
|
||||||
|
msbuild -p:Configuration=Release -t:Pack src\wixext\WixToolset.Util.wixext.csproj
|
||||||
|
|
||||||
|
@popd
|
||||||
|
@endlocal
|
|
@ -0,0 +1,29 @@
|
||||||
|
image: Visual Studio 2017
|
||||||
|
|
||||||
|
version: 0.0.0.{build}
|
||||||
|
configuration: Release
|
||||||
|
|
||||||
|
environment:
|
||||||
|
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
|
||||||
|
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
||||||
|
NUGET_XMLDOC_MODE: skip
|
||||||
|
|
||||||
|
build_script:
|
||||||
|
- appveyor.cmd
|
||||||
|
|
||||||
|
pull_requests:
|
||||||
|
do_not_increment_build_number: true
|
||||||
|
|
||||||
|
nuget:
|
||||||
|
disable_publish_on_pr: true
|
||||||
|
|
||||||
|
skip_tags: true
|
||||||
|
|
||||||
|
artifacts:
|
||||||
|
- path: build\Release\**\*.nupkg
|
||||||
|
name: nuget
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
- provider: Slack
|
||||||
|
incoming_webhook:
|
||||||
|
secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA=
|
|
@ -0,0 +1,15 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<packageSources>
|
||||||
|
<clear />
|
||||||
|
<add key="wixtoolset-data" value="https://ci.appveyor.com/nuget/wixtoolset-data" />
|
||||||
|
<add key="wixtoolset-extensibility" value="https://ci.appveyor.com/nuget/wixtoolset-extensibility" />
|
||||||
|
<add key="wixtoolset-core" value="https://ci.appveyor.com/nuget/wixtoolset-core" />
|
||||||
|
<add key="wixtoolset-core-native" value="https://ci.appveyor.com/nuget/wixtoolset-core-native" />
|
||||||
|
<add key="wixtoolset-dtf" value="https://ci.appveyor.com/nuget/wixtoolset-dtf" />
|
||||||
|
<add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" />
|
||||||
|
<add key="wixtoolset-wcautil" value="https://ci.appveyor.com/nuget/wixtoolset-wcautil" />
|
||||||
|
<add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" />
|
||||||
|
<add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
||||||
|
</packageSources>
|
||||||
|
</configuration>
|
|
@ -0,0 +1,101 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Platform Condition=" '$(Platform)' == 'AnyCPU' ">Win32</Platform>
|
||||||
|
<BaseOutputPath>$(OutputPath)</BaseOutputPath>
|
||||||
|
<IntDir>$(BaseIntermediateOutputPath)$(Platform)\</IntDir>
|
||||||
|
<OutDir>$(OutputPath)$(Platform)\</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemDefinitionGroup>
|
||||||
|
<ClCompile>
|
||||||
|
<DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings>
|
||||||
|
<WarningLevel>Level4</WarningLevel>
|
||||||
|
<AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||||
|
<PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
|
||||||
|
<CallingConvention>StdCall</CallingConvention>
|
||||||
|
<TreatWarningAsError>true</TreatWarningAsError>
|
||||||
|
<ExceptionHandling>false</ExceptionHandling>
|
||||||
|
<AdditionalOptions>-YlprecompDefine</AdditionalOptions>
|
||||||
|
<AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) > 4 ">true</MultiProcessorCompilation>
|
||||||
|
</ClCompile>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ResourceCompile>
|
||||||
|
<Lib>
|
||||||
|
<AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Lib>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>$(ProjectSubSystem)</SubSystem>
|
||||||
|
<ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile>
|
||||||
|
<NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'">
|
||||||
|
<ClCompile>
|
||||||
|
<EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Platform)'=='arm' ">
|
||||||
|
<ClCompile>
|
||||||
|
<CallingConvention>CDecl</CallingConvention>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' ">
|
||||||
|
<ClCompile>
|
||||||
|
<DebugInformationFormat>OldStyle</DebugInformationFormat>
|
||||||
|
<OmitDefaultLibName>true</OmitDefaultLibName>
|
||||||
|
<IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' ">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' ">
|
||||||
|
<ClCompile>
|
||||||
|
<BasicRuntimeChecks></BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' ">
|
||||||
|
<ClCompile>
|
||||||
|
<Optimization>MinSpace</Optimization>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' ">
|
||||||
|
<ClCompile>
|
||||||
|
<BasicRuntimeChecks></BasicRuntimeChecks>
|
||||||
|
<RuntimeLibrary>MultiThreadedDll</RuntimeLibrary>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' ">
|
||||||
|
<Link>
|
||||||
|
<KeyFile>$(LinkKeyFile)</KeyFile>
|
||||||
|
<DelaySign>$(LinkDelaySign)</DelaySign>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project>
|
||||||
|
<PropertyGroup>
|
||||||
|
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||||
|
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||||
|
<BaseIntermediateOutputPath>$(MSBuildThisFileDirectory)..\build\obj\$(MSBuildProjectName)\</BaseIntermediateOutputPath>
|
||||||
|
<OutputPath>$(MSBuildThisFileDirectory)..\build\$(Configuration)\</OutputPath>
|
||||||
|
|
||||||
|
<Authors>WiX Toolset Team</Authors>
|
||||||
|
<Company>WiX Toolset</Company>
|
||||||
|
<Copyright>Copyright (c) .NET Foundation and contributors. All rights reserved.</Copyright>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<WixToolsetRootFolder>$(MSBuildThisFileDirectory)..\..\</WixToolsetRootFolder>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Import Project="Cpp.Build.props" Condition=" '$(MSBuildProjectExtension)'=='.vcxproj' " />
|
||||||
|
<Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " />
|
||||||
|
</Project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<PropertyGroup>
|
||||||
|
<WixTargetsPath Condition=" '$(Configuration)' != 'Release' And Exists('$(MSBuildThisFileDirectory)..\..\Core\build\Release\publish\net461\wix.targets') ">$(MSBuildThisFileDirectory)..\..\Core\build\Release\publish\net461\wix.targets</WixTargetsPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,26 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#include "precomp.h"
|
||||||
|
|
||||||
|
/********************************************************************
|
||||||
|
DllMain - standard entry point for all WiX custom actions
|
||||||
|
|
||||||
|
********************************************************************/
|
||||||
|
extern "C" BOOL WINAPI DllMain(
|
||||||
|
IN HINSTANCE hInst,
|
||||||
|
IN ULONG ulReason,
|
||||||
|
IN LPVOID)
|
||||||
|
{
|
||||||
|
switch(ulReason)
|
||||||
|
{
|
||||||
|
case DLL_PROCESS_ATTACH:
|
||||||
|
WcaGlobalInitialize(hInst);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DLL_PROCESS_DETACH:
|
||||||
|
WcaGlobalFinalize();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Microsoft.VisualStudio.Setup.Configuration.Native" version="1.14.114" targetFramework="native" developmentDependency="true" />
|
||||||
|
<package id="WixToolset.DUtil" version="4.0.6" targetFramework="native" />
|
||||||
|
<package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" />
|
||||||
|
</packages>
|
|
@ -0,0 +1,13 @@
|
||||||
|
#pragma once
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <msiquery.h>
|
||||||
|
|
||||||
|
#define MAXUINT USHRT_MAX
|
||||||
|
#include <Setup.Configuration.h>
|
||||||
|
|
||||||
|
#include "wcautil.h"
|
||||||
|
#include "fileutil.h"
|
||||||
|
#include "strutil.h"
|
|
@ -0,0 +1,3 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
#include "precomp.h"
|
|
@ -0,0 +1,7 @@
|
||||||
|
; 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.
|
||||||
|
|
||||||
|
|
||||||
|
LIBRARY "utilca"
|
||||||
|
|
||||||
|
EXPORTS
|
||||||
|
|
|
@ -0,0 +1,69 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<Import Project="..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" />
|
||||||
|
<Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" />
|
||||||
|
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{076018F7-19BD-423A-ABBF-229273DA08D8}</ProjectGuid>
|
||||||
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||||
|
<TargetName>utilca</TargetName>
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
<ProjectModuleDefinitionFile>utilca.def</ProjectModuleDefinitionFile>
|
||||||
|
<Description>WiX Toolset Util CustomAction</Description>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
<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')" />
|
||||||
|
</ImportGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="dllmain.cpp">
|
||||||
|
<PrecompiledHeader>Create</PrecompiledHeader>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="utilca.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="precomp.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
<None Include="utilca.def" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<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>
|
||||||
|
</PropertyGroup>
|
||||||
|
<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'))" />
|
||||||
|
<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'))" />
|
||||||
|
<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'))" />
|
||||||
|
</Target>
|
||||||
|
</Project>
|
|
@ -0,0 +1,11 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This file contains the declaration of all the localizable strings.
|
||||||
|
-->
|
||||||
|
<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
|
||||||
|
|
||||||
|
<String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
|
||||||
|
<String Id="FeatureTitle">MsiPackage</String>
|
||||||
|
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
<Product Id="*" Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
|
||||||
|
<Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
|
||||||
|
|
||||||
|
<MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
|
||||||
|
<MediaTemplate />
|
||||||
|
|
||||||
|
<Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
|
||||||
|
<ComponentGroupRef Id="ProductComponents" />
|
||||||
|
</Feature>
|
||||||
|
|
||||||
|
</Product>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||||
|
<Directory Id="ProgramFilesFolder">
|
||||||
|
<Directory Id="INSTALLFOLDER" Name="MsiPackage" />
|
||||||
|
</Directory>
|
||||||
|
</Directory>
|
||||||
|
</Fragment>
|
||||||
|
</Wix>
|
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs"
|
||||||
|
xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
|
||||||
|
<Fragment>
|
||||||
|
<util:User Id="Everyone" Name="Everyone" />
|
||||||
|
|
||||||
|
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
|
||||||
|
<Component>
|
||||||
|
<File Source="example.txt" />
|
||||||
|
<util:FileShare Id="ExampleFileShare" Description="An example file share" Name="example">
|
||||||
|
<util:FileSharePermission User="Everyone" Read="yes" />
|
||||||
|
</util:FileShare>
|
||||||
|
</Component>
|
||||||
|
</ComponentGroup>
|
||||||
|
</Fragment>
|
||||||
|
</Wix>
|
|
@ -0,0 +1 @@
|
||||||
|
This is example.txt.
|
|
@ -0,0 +1,34 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolsetTest.VisualStudio
|
||||||
|
{
|
||||||
|
using System.Linq;
|
||||||
|
using WixBuildTools.TestSupport;
|
||||||
|
using WixToolset.Core.TestPackage;
|
||||||
|
using WixToolset.Util;
|
||||||
|
using Xunit;
|
||||||
|
|
||||||
|
public class VisualStudioExtensionFixture
|
||||||
|
{
|
||||||
|
[Fact]
|
||||||
|
public void CanBuildUsingFileShare()
|
||||||
|
{
|
||||||
|
var folder = TestData.Get(@"TestData\UsingFileShare");
|
||||||
|
var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder });
|
||||||
|
|
||||||
|
var results = build.BuildAndQuery(Build, "FileShare", "FileSharePermissions");
|
||||||
|
Assert.Equal(new[]
|
||||||
|
{
|
||||||
|
"FileShare:SetVS2010Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2010_VSIX_INSTALLER_PATH]\t0",
|
||||||
|
"FileSharePermissions:SetVS2012Vsix\t51\tVS_VSIX_INSTALLER_PATH\t[VS2012_VSIX_INSTALLER_PATH]\t0",
|
||||||
|
}, results.OrderBy(s => s).ToArray());
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Build(string[] args)
|
||||||
|
{
|
||||||
|
var result = WixRunner.Execute(args, out var messages);
|
||||||
|
Assert.Equal(0, result);
|
||||||
|
Assert.Empty(messages);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,40 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
|
<IsPackable>false</IsPackable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<NoWarn>NU1701</NoWarn>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="TestData\UsingFileShare\example.txt" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
<Content Include="TestData\UsingFileShare\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
<Content Include="TestData\UsingFileShare\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
<Content Include="TestData\UsingFileShare\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\..\wixext\WixToolset.Util.wixext.csproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="$(WixToolsetRootFolder)\Core\src\WixToolset.Core.TestPackage\WixToolset.Core.TestPackage.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Core\src\WixToolset.Core.TestPackage\WixToolset.Core.TestPackage.csproj') " />
|
||||||
|
<ProjectReference Include="$(WixToolsetRootFolder)\Core\src\wix\wix.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Core\src\wix\wix.csproj') " />
|
||||||
|
<PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Core\src\WixToolset.Core.TestPackage\WixToolset.Core.TestPackage.csproj') " PrivateAssets="all" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" />
|
||||||
|
<PackageReference Include="xunit" Version="2.2.0" />
|
||||||
|
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,192 @@
|
||||||
|
// Captured from: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.1\System.dll
|
||||||
|
|
||||||
|
namespace System.Diagnostics
|
||||||
|
{
|
||||||
|
public enum PerformanceCounterType
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An instantaneous counter that shows the most recently observed value in hexadecimal
|
||||||
|
// format. Used, for example, to maintain a simple count of items or operations.
|
||||||
|
NumberOfItemsHEX32 = 0,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An instantaneous counter that shows the most recently observed value. Used, for
|
||||||
|
// example, to maintain a simple count of a very large number of items or operations.
|
||||||
|
// It is the same as NumberOfItemsHEX32 except that it uses larger fields to accommodate
|
||||||
|
// larger values.
|
||||||
|
NumberOfItemsHEX64 = 256,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An instantaneous counter that shows the most recently observed value. Used, for
|
||||||
|
// example, to maintain a simple count of items or operations.
|
||||||
|
NumberOfItems32 = 65536,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An instantaneous counter that shows the most recently observed value. Used, for
|
||||||
|
// example, to maintain a simple count of a very large number of items or operations.
|
||||||
|
// It is the same as NumberOfItems32 except that it uses larger fields to accommodate
|
||||||
|
// larger values.
|
||||||
|
NumberOfItems64 = 65792,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A difference counter that shows the change in the measured attribute between
|
||||||
|
// the two most recent sample intervals.
|
||||||
|
CounterDelta32 = 4195328,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A difference counter that shows the change in the measured attribute between
|
||||||
|
// the two most recent sample intervals. It is the same as the CounterDelta32 counter
|
||||||
|
// type except that is uses larger fields to accomodate larger values.
|
||||||
|
CounterDelta64 = 4195584,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An average counter that shows the average number of operations completed in one
|
||||||
|
// second. When a counter of this type samples the data, each sampling interrupt
|
||||||
|
// returns one or zero. The counter data is the number of ones that were sampled.
|
||||||
|
// It measures time in units of ticks of the system performance timer.
|
||||||
|
SampleCounter = 4260864,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An average counter designed to monitor the average length of a queue to a resource
|
||||||
|
// over time. It shows the difference between the queue lengths observed during
|
||||||
|
// the last two sample intervals divided by the duration of the interval. This type
|
||||||
|
// of counter is typically used to track the number of items that are queued or
|
||||||
|
// waiting.
|
||||||
|
CountPerTimeInterval32 = 4523008,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An average counter that monitors the average length of a queue to a resource
|
||||||
|
// over time. Counters of this type display the difference between the queue lengths
|
||||||
|
// observed during the last two sample intervals, divided by the duration of the
|
||||||
|
// interval. This counter type is the same as CountPerTimeInterval32 except that
|
||||||
|
// it uses larger fields to accommodate larger values. This type of counter is typically
|
||||||
|
// used to track a high-volume or very large number of items that are queued or
|
||||||
|
// waiting.
|
||||||
|
CountPerTimeInterval64 = 4523264,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A difference counter that shows the average number of operations completed during
|
||||||
|
// each second of the sample interval. Counters of this type measure time in ticks
|
||||||
|
// of the system clock.
|
||||||
|
RateOfCountsPerSecond32 = 272696320,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A difference counter that shows the average number of operations completed during
|
||||||
|
// each second of the sample interval. Counters of this type measure time in ticks
|
||||||
|
// of the system clock. This counter type is the same as the RateOfCountsPerSecond32
|
||||||
|
// type, but it uses larger fields to accommodate larger values to track a high-volume
|
||||||
|
// number of items or operations per second, such as a byte-transmission rate.
|
||||||
|
RateOfCountsPerSecond64 = 272696576,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An instantaneous percentage counter that shows the ratio of a subset to its set
|
||||||
|
// as a percentage. For example, it compares the number of bytes in use on a disk
|
||||||
|
// to the total number of bytes on the disk. Counters of this type display the current
|
||||||
|
// percentage only, not an average over time.
|
||||||
|
RawFraction = 537003008,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the average time that a component is active as
|
||||||
|
// a percentage of the total sample time.
|
||||||
|
CounterTimer = 541132032,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the active time of a component as a percentage
|
||||||
|
// of the total elapsed time of the sample interval. It measures time in units of
|
||||||
|
// 100 nanoseconds (ns). Counters of this type are designed to measure the activity
|
||||||
|
// of one component at a time.
|
||||||
|
Timer100Ns = 542180608,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the average ratio of hits to all operations during
|
||||||
|
// the last two sample intervals.
|
||||||
|
SampleFraction = 549585920,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that displays the average percentage of active time observed
|
||||||
|
// during sample interval. The value of these counters is calculated by monitoring
|
||||||
|
// the percentage of time that the service was inactive and then subtracting that
|
||||||
|
// value from 100 percent.
|
||||||
|
CounterTimerInverse = 557909248,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the average percentage of active time observed
|
||||||
|
// during the sample interval.
|
||||||
|
Timer100NsInverse = 558957824,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that displays the active time of one or more components
|
||||||
|
// as a percentage of the total time of the sample interval. Because the numerator
|
||||||
|
// records the active time of components operating simultaneously, the resulting
|
||||||
|
// percentage can exceed 100 percent.
|
||||||
|
CounterMultiTimer = 574686464,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the active time of one or more components as
|
||||||
|
// a percentage of the total time of the sample interval. It measures time in 100
|
||||||
|
// nanosecond (ns) units.
|
||||||
|
CounterMultiTimer100Ns = 575735040,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the active time of one or more components as
|
||||||
|
// a percentage of the total time of the sample interval. It derives the active
|
||||||
|
// time by measuring the time that the components were not active and subtracting
|
||||||
|
// the result from 100 percent by the number of objects monitored.
|
||||||
|
CounterMultiTimerInverse = 591463680,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A percentage counter that shows the active time of one or more components as
|
||||||
|
// a percentage of the total time of the sample interval. Counters of this type
|
||||||
|
// measure time in 100 nanosecond (ns) units. They derive the active time by measuring
|
||||||
|
// the time that the components were not active and subtracting the result from
|
||||||
|
// multiplying 100 percent by the number of objects monitored.
|
||||||
|
CounterMultiTimer100NsInverse = 592512256,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An average counter that measures the time it takes, on average, to complete a
|
||||||
|
// process or operation. Counters of this type display a ratio of the total elapsed
|
||||||
|
// time of the sample interval to the number of processes or operations completed
|
||||||
|
// during that time. This counter type measures time in ticks of the system clock.
|
||||||
|
AverageTimer32 = 805438464,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A difference timer that shows the total time between when the component or process
|
||||||
|
// started and the time when this value is calculated.
|
||||||
|
ElapsedTime = 807666944,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// An average counter that shows how many items are processed, on average, during
|
||||||
|
// an operation. Counters of this type display a ratio of the items processed to
|
||||||
|
// the number of operations completed. The ratio is calculated by comparing the
|
||||||
|
// number of items processed during the last interval to the number of operations
|
||||||
|
// completed during the last interval.
|
||||||
|
AverageCount64 = 1073874176,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A base counter that stores the number of sampling interrupts taken and is used
|
||||||
|
// as a denominator in the sampling fraction. The sampling fraction is the number
|
||||||
|
// of samples that were 1 (or true) for a sample interrupt. Check that this value
|
||||||
|
// is greater than zero before using it as the denominator in a calculation of SampleFraction.
|
||||||
|
SampleBase = 1073939457,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A base counter that is used in the calculation of time or count averages, such
|
||||||
|
// as AverageTimer32 and AverageCount64. Stores the denominator for calculating
|
||||||
|
// a counter to present "time per operation" or "count per operation".
|
||||||
|
AverageBase = 1073939458,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A base counter that stores the denominator of a counter that presents a general
|
||||||
|
// arithmetic fraction. Check that this value is greater than zero before using
|
||||||
|
// it as the denominator in a RawFraction value calculation.
|
||||||
|
RawBase = 1073939459,
|
||||||
|
//
|
||||||
|
// Summary:
|
||||||
|
// A base counter that indicates the number of items sampled. It is used as the
|
||||||
|
// denominator in the calculations to get an average among the items sampled when
|
||||||
|
// taking timings of multiple, but similar items. Used with CounterMultiTimer, CounterMultiTimerInverse,
|
||||||
|
// CounterMultiTimer100Ns, and CounterMultiTimer100NsInverse.
|
||||||
|
CounterMultiBase = 1107494144
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition EventManifest = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.EventManifest.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(EventManifestTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(EventManifestTupleFields.File), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(EventManifestTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum EventManifestTupleFields
|
||||||
|
{
|
||||||
|
Component_,
|
||||||
|
File,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class EventManifestTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public EventManifestTuple() : base(UtilTupleDefinitions.EventManifest, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public EventManifestTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.EventManifest, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[EventManifestTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)EventManifestTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)EventManifestTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)EventManifestTupleFields.File].AsString();
|
||||||
|
set => this.Set((int)EventManifestTupleFields.File, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition FileSharePermissions = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.FileSharePermissions.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.FileShare_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.User_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileSharePermissionsTupleFields.Permissions), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(FileSharePermissionsTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum FileSharePermissionsTupleFields
|
||||||
|
{
|
||||||
|
FileShare_,
|
||||||
|
User_,
|
||||||
|
Permissions,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileSharePermissionsTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public FileSharePermissionsTuple() : base(UtilTupleDefinitions.FileSharePermissions, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileSharePermissionsTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.FileSharePermissions, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[FileSharePermissionsTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string FileShare_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileSharePermissionsTupleFields.FileShare_].AsString();
|
||||||
|
set => this.Set((int)FileSharePermissionsTupleFields.FileShare_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string User_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileSharePermissionsTupleFields.User_].AsString();
|
||||||
|
set => this.Set((int)FileSharePermissionsTupleFields.User_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Permissions
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileSharePermissionsTupleFields.Permissions].AsNumber();
|
||||||
|
set => this.Set((int)FileSharePermissionsTupleFields.Permissions, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition FileShare = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.FileShare.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.FileShare), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.ShareName), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.Description), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.Directory_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.User_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(FileShareTupleFields.Permissions), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(FileShareTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum FileShareTupleFields
|
||||||
|
{
|
||||||
|
FileShare,
|
||||||
|
ShareName,
|
||||||
|
Component_,
|
||||||
|
Description,
|
||||||
|
Directory_,
|
||||||
|
User_,
|
||||||
|
Permissions,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class FileShareTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public FileShareTuple() : base(UtilTupleDefinitions.FileShare, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public FileShareTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.FileShare, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[FileShareTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string FileShare
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.FileShare].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.FileShare, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ShareName
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.ShareName].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.ShareName, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Description
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.Description].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.Description, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Directory_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.Directory_].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.Directory_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string User_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.User_].AsString();
|
||||||
|
set => this.Set((int)FileShareTupleFields.User_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Permissions
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)FileShareTupleFields.Permissions].AsNumber();
|
||||||
|
set => this.Set((int)FileShareTupleFields.Permissions, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition Group = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.Group.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(GroupTupleFields.Group), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(GroupTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(GroupTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(GroupTupleFields.Domain), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(GroupTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum GroupTupleFields
|
||||||
|
{
|
||||||
|
Group,
|
||||||
|
Component_,
|
||||||
|
Name,
|
||||||
|
Domain,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class GroupTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public GroupTuple() : base(UtilTupleDefinitions.Group, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public GroupTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.Group, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[GroupTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string Group
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)GroupTupleFields.Group].AsString();
|
||||||
|
set => this.Set((int)GroupTupleFields.Group, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)GroupTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)GroupTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)GroupTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)GroupTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Domain
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)GroupTupleFields.Domain].AsString();
|
||||||
|
set => this.Set((int)GroupTupleFields.Domain, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition PerfmonManifest = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.PerfmonManifest.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.File), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonManifestTupleFields.ResourceFileDirectory), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(PerfmonManifestTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum PerfmonManifestTupleFields
|
||||||
|
{
|
||||||
|
Component_,
|
||||||
|
File,
|
||||||
|
ResourceFileDirectory,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PerfmonManifestTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public PerfmonManifestTuple() : base(UtilTupleDefinitions.PerfmonManifest, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PerfmonManifestTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.PerfmonManifest, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[PerfmonManifestTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonManifestTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)PerfmonManifestTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonManifestTupleFields.File].AsString();
|
||||||
|
set => this.Set((int)PerfmonManifestTupleFields.File, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ResourceFileDirectory
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonManifestTupleFields.ResourceFileDirectory].AsString();
|
||||||
|
set => this.Set((int)PerfmonManifestTupleFields.ResourceFileDirectory, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition Perfmon = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.Perfmon.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonTupleFields.File), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerfmonTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(PerfmonTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum PerfmonTupleFields
|
||||||
|
{
|
||||||
|
Component_,
|
||||||
|
File,
|
||||||
|
Name,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PerfmonTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public PerfmonTuple() : base(UtilTupleDefinitions.Perfmon, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PerfmonTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.Perfmon, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[PerfmonTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)PerfmonTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonTupleFields.File].AsString();
|
||||||
|
set => this.Set((int)PerfmonTupleFields.File, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerfmonTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)PerfmonTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition PerformanceCategory = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.PerformanceCategory.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.PerformanceCategory), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.IniData), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(PerformanceCategoryTupleFields.ConstantData), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(PerformanceCategoryTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum PerformanceCategoryTupleFields
|
||||||
|
{
|
||||||
|
PerformanceCategory,
|
||||||
|
Component_,
|
||||||
|
Name,
|
||||||
|
IniData,
|
||||||
|
ConstantData,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PerformanceCategoryTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public PerformanceCategoryTuple() : base(UtilTupleDefinitions.PerformanceCategory, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public PerformanceCategoryTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.PerformanceCategory, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[PerformanceCategoryTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string PerformanceCategory
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerformanceCategoryTupleFields.PerformanceCategory].AsString();
|
||||||
|
set => this.Set((int)PerformanceCategoryTupleFields.PerformanceCategory, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerformanceCategoryTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)PerformanceCategoryTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerformanceCategoryTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)PerformanceCategoryTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IniData
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerformanceCategoryTupleFields.IniData].AsString();
|
||||||
|
set => this.Set((int)PerformanceCategoryTupleFields.IniData, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ConstantData
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)PerformanceCategoryTupleFields.ConstantData].AsString();
|
||||||
|
set => this.Set((int)PerformanceCategoryTupleFields.ConstantData, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition SecureObjects = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.SecureObjects.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.SecureObject), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Table), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Domain), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.User), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Permission), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(SecureObjectsTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(SecureObjectsTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum SecureObjectsTupleFields
|
||||||
|
{
|
||||||
|
SecureObject,
|
||||||
|
Table,
|
||||||
|
Domain,
|
||||||
|
User,
|
||||||
|
Permission,
|
||||||
|
Component_,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SecureObjectsTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public SecureObjectsTuple() : base(UtilTupleDefinitions.SecureObjects, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public SecureObjectsTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.SecureObjects, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[SecureObjectsTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string SecureObject
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.SecureObject].AsString();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.SecureObject, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Table
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.Table].AsString();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.Table, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Domain
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.Domain].AsString();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.Domain, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string User
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.User].AsString();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.User, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Permission
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.Permission].AsNumber();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.Permission, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)SecureObjectsTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)SecureObjectsTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition ServiceConfig = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.ServiceConfig.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ServiceName), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.NewService), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.FirstFailureActionType), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.SecondFailureActionType), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ThirdFailureActionType), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ResetPeriodInDays), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.RestartServiceDelayInSeconds), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.ProgramCommandLine), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(ServiceConfigTupleFields.RebootMessage), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(ServiceConfigTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum ServiceConfigTupleFields
|
||||||
|
{
|
||||||
|
ServiceName,
|
||||||
|
Component_,
|
||||||
|
NewService,
|
||||||
|
FirstFailureActionType,
|
||||||
|
SecondFailureActionType,
|
||||||
|
ThirdFailureActionType,
|
||||||
|
ResetPeriodInDays,
|
||||||
|
RestartServiceDelayInSeconds,
|
||||||
|
ProgramCommandLine,
|
||||||
|
RebootMessage,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ServiceConfigTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public ServiceConfigTuple() : base(UtilTupleDefinitions.ServiceConfig, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public ServiceConfigTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.ServiceConfig, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[ServiceConfigTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string ServiceName
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.ServiceName].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.ServiceName, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int NewService
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.NewService].AsNumber();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.NewService, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string FirstFailureActionType
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.FirstFailureActionType].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.FirstFailureActionType, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string SecondFailureActionType
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.SecondFailureActionType].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.SecondFailureActionType, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ThirdFailureActionType
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.ThirdFailureActionType].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.ThirdFailureActionType, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int ResetPeriodInDays
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.ResetPeriodInDays].AsNumber();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.ResetPeriodInDays, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int RestartServiceDelayInSeconds
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.RestartServiceDelayInSeconds].AsNumber();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.RestartServiceDelayInSeconds, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ProgramCommandLine
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.ProgramCommandLine].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.ProgramCommandLine, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string RebootMessage
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)ServiceConfigTupleFields.RebootMessage].AsString();
|
||||||
|
set => this.Set((int)ServiceConfigTupleFields.RebootMessage, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition UserGroup = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.UserGroup.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(UserGroupTupleFields.User_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserGroupTupleFields.Group_), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(UserGroupTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum UserGroupTupleFields
|
||||||
|
{
|
||||||
|
User_,
|
||||||
|
Group_,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UserGroupTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public UserGroupTuple() : base(UtilTupleDefinitions.UserGroup, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserGroupTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.UserGroup, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[UserGroupTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string User_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserGroupTupleFields.User_].AsString();
|
||||||
|
set => this.Set((int)UserGroupTupleFields.User_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Group_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserGroupTupleFields.Group_].AsString();
|
||||||
|
set => this.Set((int)UserGroupTupleFields.Group_, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition User = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.User.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.User), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.Domain), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.Password), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(UserTupleFields.Attributes), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(UserTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum UserTupleFields
|
||||||
|
{
|
||||||
|
User,
|
||||||
|
Component_,
|
||||||
|
Name,
|
||||||
|
Domain,
|
||||||
|
Password,
|
||||||
|
Attributes,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class UserTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public UserTuple() : base(UtilTupleDefinitions.User, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public UserTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.User, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[UserTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string User
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.User].AsString();
|
||||||
|
set => this.Set((int)UserTupleFields.User, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)UserTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)UserTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Domain
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.Domain].AsString();
|
||||||
|
set => this.Set((int)UserTupleFields.Domain, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Password
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.Password].AsString();
|
||||||
|
set => this.Set((int)UserTupleFields.Password, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Attributes
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)UserTupleFields.Attributes].AsNumber();
|
||||||
|
set => this.Set((int)UserTupleFields.Attributes, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum UtilTupleDefinitionType
|
||||||
|
{
|
||||||
|
EventManifest,
|
||||||
|
FileShare,
|
||||||
|
FileSharePermissions,
|
||||||
|
Group,
|
||||||
|
Perfmon,
|
||||||
|
PerfmonManifest,
|
||||||
|
PerformanceCategory,
|
||||||
|
SecureObjects,
|
||||||
|
ServiceConfig,
|
||||||
|
User,
|
||||||
|
UserGroup,
|
||||||
|
WixCloseApplication,
|
||||||
|
WixFormatFiles,
|
||||||
|
WixInternetShortcut,
|
||||||
|
WixRemoveFolderEx,
|
||||||
|
WixRestartResource,
|
||||||
|
WixTouchFile,
|
||||||
|
XmlConfig,
|
||||||
|
XmlFile,
|
||||||
|
}
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly Version Version = new Version("4.0.0");
|
||||||
|
|
||||||
|
public static IntermediateTupleDefinition ByName(string name)
|
||||||
|
{
|
||||||
|
if (!Enum.TryParse(name, out UtilTupleDefinitionType type))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ByType(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IntermediateTupleDefinition ByType(UtilTupleDefinitionType type)
|
||||||
|
{
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case UtilTupleDefinitionType.EventManifest:
|
||||||
|
return UtilTupleDefinitions.EventManifest;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.FileShare:
|
||||||
|
return UtilTupleDefinitions.FileShare;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.FileSharePermissions:
|
||||||
|
return UtilTupleDefinitions.FileSharePermissions;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.Group:
|
||||||
|
return UtilTupleDefinitions.Group;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.Perfmon:
|
||||||
|
return UtilTupleDefinitions.Perfmon;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.PerfmonManifest:
|
||||||
|
return UtilTupleDefinitions.PerfmonManifest;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.PerformanceCategory:
|
||||||
|
return UtilTupleDefinitions.PerformanceCategory;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.SecureObjects:
|
||||||
|
return UtilTupleDefinitions.SecureObjects;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.ServiceConfig:
|
||||||
|
return UtilTupleDefinitions.ServiceConfig;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.User:
|
||||||
|
return UtilTupleDefinitions.User;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.UserGroup:
|
||||||
|
return UtilTupleDefinitions.UserGroup;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixCloseApplication:
|
||||||
|
return UtilTupleDefinitions.WixCloseApplication;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixFormatFiles:
|
||||||
|
return UtilTupleDefinitions.WixFormatFiles;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixInternetShortcut:
|
||||||
|
return UtilTupleDefinitions.WixInternetShortcut;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixRemoveFolderEx:
|
||||||
|
return UtilTupleDefinitions.WixRemoveFolderEx;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixRestartResource:
|
||||||
|
return UtilTupleDefinitions.WixRestartResource;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.WixTouchFile:
|
||||||
|
return UtilTupleDefinitions.WixTouchFile;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.XmlConfig:
|
||||||
|
return UtilTupleDefinitions.XmlConfig;
|
||||||
|
|
||||||
|
case UtilTupleDefinitionType.XmlFile:
|
||||||
|
return UtilTupleDefinitions.XmlFile;
|
||||||
|
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(type));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixCloseApplication = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixCloseApplication.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.WixCloseApplication), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Target), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Description), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Condition), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Attributes), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Sequence), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Property), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.TerminateExitCode), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixCloseApplicationTupleFields.Timeout), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(WixCloseApplicationTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixCloseApplicationTupleFields
|
||||||
|
{
|
||||||
|
WixCloseApplication,
|
||||||
|
Target,
|
||||||
|
Description,
|
||||||
|
Condition,
|
||||||
|
Attributes,
|
||||||
|
Sequence,
|
||||||
|
Property,
|
||||||
|
TerminateExitCode,
|
||||||
|
Timeout,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixCloseApplicationTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixCloseApplicationTuple() : base(UtilTupleDefinitions.WixCloseApplication, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixCloseApplicationTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixCloseApplication, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixCloseApplicationTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string WixCloseApplication
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.WixCloseApplication].AsString();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.WixCloseApplication, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Target
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Target].AsString();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Target, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Description
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Description].AsString();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Description, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Condition
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Condition].AsString();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Condition, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Attributes
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Attributes].AsNumber();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Attributes, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Sequence
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Sequence].AsNumber();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Sequence, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Property
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Property].AsString();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Property, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int TerminateExitCode
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.TerminateExitCode].AsNumber();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.TerminateExitCode, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Timeout
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixCloseApplicationTupleFields.Timeout].AsNumber();
|
||||||
|
set => this.Set((int)WixCloseApplicationTupleFields.Timeout, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixFormatFiles = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixFormatFiles.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.Binary_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixFormatFilesTupleFields.File_), IntermediateFieldType.String),
|
||||||
|
},
|
||||||
|
typeof(WixFormatFilesTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixFormatFilesTupleFields
|
||||||
|
{
|
||||||
|
Binary_,
|
||||||
|
File_,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixFormatFilesTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixFormatFilesTuple() : base(UtilTupleDefinitions.WixFormatFiles, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixFormatFilesTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixFormatFiles, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixFormatFilesTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string Binary_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixFormatFilesTupleFields.Binary_].AsString();
|
||||||
|
set => this.Set((int)WixFormatFilesTupleFields.Binary_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixFormatFilesTupleFields.File_].AsString();
|
||||||
|
set => this.Set((int)WixFormatFilesTupleFields.File_, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixInternetShortcut = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixInternetShortcut.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.WixInternetShortcut), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Directory_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Target), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.Attributes), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.IconFile), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixInternetShortcutTupleFields.IconIndex), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(WixInternetShortcutTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixInternetShortcutTupleFields
|
||||||
|
{
|
||||||
|
WixInternetShortcut,
|
||||||
|
Component_,
|
||||||
|
Directory_,
|
||||||
|
Name,
|
||||||
|
Target,
|
||||||
|
Attributes,
|
||||||
|
IconFile,
|
||||||
|
IconIndex,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixInternetShortcutTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixInternetShortcutTuple() : base(UtilTupleDefinitions.WixInternetShortcut, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixInternetShortcutTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixInternetShortcut, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixInternetShortcutTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string WixInternetShortcut
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.WixInternetShortcut].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.WixInternetShortcut, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Directory_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.Directory_].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.Directory_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Target
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.Target].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.Target, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Attributes
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.Attributes].AsNumber();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.Attributes, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string IconFile
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.IconFile].AsString();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.IconFile, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int IconIndex
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixInternetShortcutTupleFields.IconIndex].AsNumber();
|
||||||
|
set => this.Set((int)WixInternetShortcutTupleFields.IconIndex, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixRemoveFolderEx = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixRemoveFolderEx.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.WixRemoveFolderEx), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.Property), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRemoveFolderExTupleFields.InstallMode), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(WixRemoveFolderExTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixRemoveFolderExTupleFields
|
||||||
|
{
|
||||||
|
WixRemoveFolderEx,
|
||||||
|
Component_,
|
||||||
|
Property,
|
||||||
|
InstallMode,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixRemoveFolderExTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixRemoveFolderExTuple() : base(UtilTupleDefinitions.WixRemoveFolderEx, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixRemoveFolderExTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixRemoveFolderEx, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixRemoveFolderExTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string WixRemoveFolderEx
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRemoveFolderExTupleFields.WixRemoveFolderEx].AsString();
|
||||||
|
set => this.Set((int)WixRemoveFolderExTupleFields.WixRemoveFolderEx, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRemoveFolderExTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)WixRemoveFolderExTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Property
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRemoveFolderExTupleFields.Property].AsString();
|
||||||
|
set => this.Set((int)WixRemoveFolderExTupleFields.Property, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int InstallMode
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRemoveFolderExTupleFields.InstallMode].AsNumber();
|
||||||
|
set => this.Set((int)WixRemoveFolderExTupleFields.InstallMode, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixRestartResource = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixRestartResource.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.WixRestartResource), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Resource), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixRestartResourceTupleFields.Attributes), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(WixRestartResourceTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixRestartResourceTupleFields
|
||||||
|
{
|
||||||
|
WixRestartResource,
|
||||||
|
Component_,
|
||||||
|
Resource,
|
||||||
|
Attributes,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixRestartResourceTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixRestartResourceTuple() : base(UtilTupleDefinitions.WixRestartResource, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixRestartResourceTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixRestartResource, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixRestartResourceTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string WixRestartResource
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRestartResourceTupleFields.WixRestartResource].AsString();
|
||||||
|
set => this.Set((int)WixRestartResourceTupleFields.WixRestartResource, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRestartResourceTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)WixRestartResourceTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Resource
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRestartResourceTupleFields.Resource].AsString();
|
||||||
|
set => this.Set((int)WixRestartResourceTupleFields.Resource, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Attributes
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixRestartResourceTupleFields.Attributes].AsNumber();
|
||||||
|
set => this.Set((int)WixRestartResourceTupleFields.Attributes, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition WixTouchFile = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.WixTouchFile.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.WixTouchFile), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Path), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(WixTouchFileTupleFields.Attributes), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(WixTouchFileTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum WixTouchFileTupleFields
|
||||||
|
{
|
||||||
|
WixTouchFile,
|
||||||
|
Component_,
|
||||||
|
Path,
|
||||||
|
Attributes,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class WixTouchFileTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public WixTouchFileTuple() : base(UtilTupleDefinitions.WixTouchFile, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public WixTouchFileTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.WixTouchFile, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[WixTouchFileTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string WixTouchFile
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixTouchFileTupleFields.WixTouchFile].AsString();
|
||||||
|
set => this.Set((int)WixTouchFileTupleFields.WixTouchFile, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixTouchFileTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)WixTouchFileTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Path
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixTouchFileTupleFields.Path].AsString();
|
||||||
|
set => this.Set((int)WixTouchFileTupleFields.Path, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Attributes
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)WixTouchFileTupleFields.Attributes].AsNumber();
|
||||||
|
set => this.Set((int)WixTouchFileTupleFields.Attributes, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,111 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition XmlConfig = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.XmlConfig.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.XmlConfig), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.File), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.ElementPath), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.VerifyPath), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Value), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Flags), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlConfigTupleFields.Sequence), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(XmlConfigTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum XmlConfigTupleFields
|
||||||
|
{
|
||||||
|
XmlConfig,
|
||||||
|
File,
|
||||||
|
ElementPath,
|
||||||
|
VerifyPath,
|
||||||
|
Name,
|
||||||
|
Value,
|
||||||
|
Flags,
|
||||||
|
Component_,
|
||||||
|
Sequence,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class XmlConfigTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public XmlConfigTuple() : base(UtilTupleDefinitions.XmlConfig, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public XmlConfigTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.XmlConfig, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[XmlConfigTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string XmlConfig
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.XmlConfig].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.XmlConfig, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.File].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.File, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ElementPath
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.ElementPath].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.ElementPath, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string VerifyPath
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.VerifyPath].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.VerifyPath, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.Value].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.Value, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Flags
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.Flags].AsNumber();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.Flags, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Sequence
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlConfigTupleFields.Sequence].AsNumber();
|
||||||
|
set => this.Set((int)XmlConfigTupleFields.Sequence, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,103 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Util.Tuples;
|
||||||
|
|
||||||
|
public static partial class UtilTupleDefinitions
|
||||||
|
{
|
||||||
|
public static readonly IntermediateTupleDefinition XmlFile = new IntermediateTupleDefinition(
|
||||||
|
UtilTupleDefinitionType.XmlFile.ToString(),
|
||||||
|
new[]
|
||||||
|
{
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.XmlFile), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.File), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.ElementPath), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Name), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Value), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Flags), IntermediateFieldType.Number),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Component_), IntermediateFieldType.String),
|
||||||
|
new IntermediateFieldDefinition(nameof(XmlFileTupleFields.Sequence), IntermediateFieldType.Number),
|
||||||
|
},
|
||||||
|
typeof(XmlFileTuple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace WixToolset.Util.Tuples
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public enum XmlFileTupleFields
|
||||||
|
{
|
||||||
|
XmlFile,
|
||||||
|
File,
|
||||||
|
ElementPath,
|
||||||
|
Name,
|
||||||
|
Value,
|
||||||
|
Flags,
|
||||||
|
Component_,
|
||||||
|
Sequence,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class XmlFileTuple : IntermediateTuple
|
||||||
|
{
|
||||||
|
public XmlFileTuple() : base(UtilTupleDefinitions.XmlFile, null, null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public XmlFileTuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base(UtilTupleDefinitions.XmlFile, sourceLineNumber, id)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public IntermediateField this[XmlFileTupleFields index] => this.Fields[(int)index];
|
||||||
|
|
||||||
|
public string XmlFile
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.XmlFile].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.XmlFile, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string File
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.File].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.File, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ElementPath
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.ElementPath].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.ElementPath, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Name
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.Name].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.Name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Value
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.Value].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.Value, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Flags
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.Flags].AsNumber();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.Flags, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string Component_
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.Component_].AsString();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.Component_, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Sequence
|
||||||
|
{
|
||||||
|
get => this.Fields[(int)XmlFileTupleFields.Sequence].AsNumber();
|
||||||
|
set => this.Set((int)XmlFileTupleFields.Sequence, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,347 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Extensions
|
||||||
|
{
|
||||||
|
#if TODO_BRINGBACK_FOR_BUNDLES
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Extensibility;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The binder for the WiX Toolset Utility Extension.
|
||||||
|
/// </summary>
|
||||||
|
public sealed class UtilBinder : BinderExtension
|
||||||
|
{
|
||||||
|
// TODO: When WixSearch is supported in Product, etc, we may need to call
|
||||||
|
// ReorderWixSearch() from each of those initializers.
|
||||||
|
|
||||||
|
// TODO: A general-purpose "reorder this table given these constraints"
|
||||||
|
// mechanism may end up being helpful. This could be declaratively stated
|
||||||
|
// in the table definitions, or exposed from the core Wix.dll and called
|
||||||
|
// as-needed by any extensions.
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Called before bundle binding occurs.
|
||||||
|
/// </summary>
|
||||||
|
public override void Initialize(Output bundle)
|
||||||
|
{
|
||||||
|
if (OutputType.Bundle == bundle.Type)
|
||||||
|
{
|
||||||
|
this.ReorderWixSearch(bundle);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reorders Any WixSearch items.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="output">Output containing the tables to process.</param>
|
||||||
|
private void ReorderWixSearch(Output output)
|
||||||
|
{
|
||||||
|
Table wixSearchTable = output.Tables["WixSearch"];
|
||||||
|
if (null == wixSearchTable || wixSearchTable.Rows.Count == 0)
|
||||||
|
{
|
||||||
|
// nothing to do!
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
RowDictionary rowDictionary = new RowDictionary();
|
||||||
|
foreach (Row row in wixSearchTable.Rows)
|
||||||
|
{
|
||||||
|
rowDictionary.AddRow(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
Constraints constraints = new Constraints();
|
||||||
|
Table wixSearchRelationTable = output.Tables["WixSearchRelation"];
|
||||||
|
if (null != wixSearchRelationTable && wixSearchRelationTable.Rows.Count > 0)
|
||||||
|
{
|
||||||
|
// add relational info to our data...
|
||||||
|
foreach (Row row in wixSearchRelationTable.Rows)
|
||||||
|
{
|
||||||
|
constraints.AddConstraint((string)row[0], (string)row[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.FindCircularReference(constraints);
|
||||||
|
|
||||||
|
if (this.Core.EncounteredError)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.FlattenDependentReferences(constraints);
|
||||||
|
|
||||||
|
// Reorder by topographical sort (http://en.wikipedia.org/wiki/Topological_sorting)
|
||||||
|
// We use a variation of Kahn (1962) algorithm as described in
|
||||||
|
// Wikipedia, with the additional criteria that start nodes are sorted
|
||||||
|
// lexicographically at each step to ensure a deterministic ordering
|
||||||
|
// based on 'after' dependencies and ID.
|
||||||
|
TopologicalSort sorter = new TopologicalSort();
|
||||||
|
List <string> sortedIds = sorter.Sort(rowDictionary.Keys, constraints);
|
||||||
|
|
||||||
|
// Now, re-write the table with the searches in order...
|
||||||
|
wixSearchTable.Rows.Clear();
|
||||||
|
foreach (string id in sortedIds)
|
||||||
|
{
|
||||||
|
wixSearchTable.Rows.Add(rowDictionary[id]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A dictionary of Row items, indexed by their first column.
|
||||||
|
/// </summary>
|
||||||
|
private class RowDictionary : Dictionary<string, Row>
|
||||||
|
{
|
||||||
|
public void AddRow(Row row)
|
||||||
|
{
|
||||||
|
this.Add((string)row[0], row);
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Hide other Add methods?
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A dictionary of constraints, mapping an id to a list of ids.
|
||||||
|
/// </summary>
|
||||||
|
private class Constraints : Dictionary<string, List<string>>
|
||||||
|
{
|
||||||
|
public void AddConstraint(string id, string afterId)
|
||||||
|
{
|
||||||
|
if (!this.ContainsKey(id))
|
||||||
|
{
|
||||||
|
this.Add(id, new List<string>());
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Show warning if a constraint is seen twice?
|
||||||
|
if (!this[id].Contains(afterId))
|
||||||
|
{
|
||||||
|
this[id].Add(afterId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Hide other Add methods?
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Finds circular references in the constraints.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="constraints">Constraints to check.</param>
|
||||||
|
/// <remarks>This is not particularly performant, but it works.</remarks>
|
||||||
|
private void FindCircularReference(Constraints constraints)
|
||||||
|
{
|
||||||
|
foreach (string id in constraints.Keys)
|
||||||
|
{
|
||||||
|
List<string> seenIds = new List<string>();
|
||||||
|
string chain = null;
|
||||||
|
if (FindCircularReference(constraints, id, id, seenIds, out chain))
|
||||||
|
{
|
||||||
|
// We will show a separate message for every ID that's in
|
||||||
|
// the loop. We could bail after the first one, but then
|
||||||
|
// we wouldn't catch disjoint loops in a single run.
|
||||||
|
this.Core.OnMessage(UtilErrors.CircularSearchReference(chain));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Recursive function that finds circular references in the constraints.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="constraints">Constraints to check.</param>
|
||||||
|
/// <param name="checkId">The identifier currently being looking for. (Fixed across a given run.)</param>
|
||||||
|
/// <param name="currentId">The idenifier curently being tested.</param>
|
||||||
|
/// <param name="seenIds">A list of identifiers seen, to ensure each identifier is only expanded once.</param>
|
||||||
|
/// <param name="chain">If a circular reference is found, will contain the chain of references.</param>
|
||||||
|
/// <returns>True if a circular reference is found, false otherwise.</returns>
|
||||||
|
private bool FindCircularReference(Constraints constraints, string checkId, string currentId, List<string> seenIds, out string chain)
|
||||||
|
{
|
||||||
|
chain = null;
|
||||||
|
List<string> afterList = null;
|
||||||
|
if (constraints.TryGetValue(currentId, out afterList))
|
||||||
|
{
|
||||||
|
foreach (string afterId in afterList)
|
||||||
|
{
|
||||||
|
if (afterId == checkId)
|
||||||
|
{
|
||||||
|
chain = String.Format(CultureInfo.InvariantCulture, "{0} -> {1}", currentId, afterId);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!seenIds.Contains(afterId))
|
||||||
|
{
|
||||||
|
seenIds.Add(afterId);
|
||||||
|
if (FindCircularReference(constraints, checkId, afterId, seenIds, out chain))
|
||||||
|
{
|
||||||
|
chain = String.Format(CultureInfo.InvariantCulture, "{0} -> {1}", currentId, chain);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Flattens any dependency chains to simplify reordering.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="constraints"></param>
|
||||||
|
private void FlattenDependentReferences(Constraints constraints)
|
||||||
|
{
|
||||||
|
foreach (string id in constraints.Keys)
|
||||||
|
{
|
||||||
|
List<string> flattenedIds = new List<string>();
|
||||||
|
AddDependentReferences(constraints, id, flattenedIds);
|
||||||
|
List<string> constraintList = constraints[id];
|
||||||
|
foreach (string flattenedId in flattenedIds)
|
||||||
|
{
|
||||||
|
if (!constraintList.Contains(flattenedId))
|
||||||
|
{
|
||||||
|
constraintList.Add(flattenedId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds dependent references to a list.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="constraints"></param>
|
||||||
|
/// <param name="currentId"></param>
|
||||||
|
/// <param name="seenIds"></param>
|
||||||
|
private void AddDependentReferences(Constraints constraints, string currentId, List<string> seenIds)
|
||||||
|
{
|
||||||
|
List<string> afterList = null;
|
||||||
|
if (constraints.TryGetValue(currentId, out afterList))
|
||||||
|
{
|
||||||
|
foreach (string afterId in afterList)
|
||||||
|
{
|
||||||
|
if (!seenIds.Contains(afterId))
|
||||||
|
{
|
||||||
|
seenIds.Add(afterId);
|
||||||
|
AddDependentReferences(constraints, afterId, seenIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reorder by topological sort
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// We use a variation of Kahn (1962) algorithm as described in
|
||||||
|
/// Wikipedia (http://en.wikipedia.org/wiki/Topological_sorting), with
|
||||||
|
/// the additional criteria that start nodes are sorted lexicographically
|
||||||
|
/// at each step to ensure a deterministic ordering based on 'after'
|
||||||
|
/// dependencies and ID.
|
||||||
|
/// </remarks>
|
||||||
|
private class TopologicalSort
|
||||||
|
{
|
||||||
|
private List<string> startIds = new List<string>();
|
||||||
|
private Constraints constraints;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reorder by topological sort
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="allIds">The complete list of IDs.</param>
|
||||||
|
/// <param name="constraints">Constraints to use.</param>
|
||||||
|
/// <returns>The topologically sorted list of IDs.</returns>
|
||||||
|
internal List<string> Sort(IEnumerable<string> allIds, Constraints constraints)
|
||||||
|
{
|
||||||
|
this.startIds.Clear();
|
||||||
|
this.CopyConstraints(constraints);
|
||||||
|
|
||||||
|
this.FindInitialStartIds(allIds);
|
||||||
|
|
||||||
|
// We always create a new sortedId list, because we return it
|
||||||
|
// to the caller and don't know what its lifetime may be.
|
||||||
|
List<string> sortedIds = new List<string>();
|
||||||
|
|
||||||
|
while (this.startIds.Count > 0)
|
||||||
|
{
|
||||||
|
this.SortStartIds();
|
||||||
|
|
||||||
|
string currentId = this.startIds[0];
|
||||||
|
sortedIds.Add(currentId);
|
||||||
|
this.startIds.RemoveAt(0);
|
||||||
|
|
||||||
|
this.ResolveConstraint(currentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
return sortedIds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Copies a Constraints set (to prevent modifying the incoming data).
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="constraints">Constraints to copy.</param>
|
||||||
|
private void CopyConstraints(Constraints constraints)
|
||||||
|
{
|
||||||
|
this.constraints = new Constraints();
|
||||||
|
foreach (string id in constraints.Keys)
|
||||||
|
{
|
||||||
|
foreach (string afterId in constraints[id])
|
||||||
|
{
|
||||||
|
this.constraints.AddConstraint(id, afterId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Finds initial start IDs. (Those with no constraints.)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="allIds">The complete list of IDs.</param>
|
||||||
|
private void FindInitialStartIds(IEnumerable<string> allIds)
|
||||||
|
{
|
||||||
|
foreach (string id in allIds)
|
||||||
|
{
|
||||||
|
if (!this.constraints.ContainsKey(id))
|
||||||
|
{
|
||||||
|
this.startIds.Add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sorts start IDs.
|
||||||
|
/// </summary>
|
||||||
|
private void SortStartIds()
|
||||||
|
{
|
||||||
|
this.startIds.Sort();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Removes the resolved constraint and updates the list of startIds
|
||||||
|
/// with any now-valid (all constraints resolved) IDs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="resolvedId">The ID to resolve from the set of constraints.</param>
|
||||||
|
private void ResolveConstraint(string resolvedId)
|
||||||
|
{
|
||||||
|
List<string> newStartIds = new List<string>();
|
||||||
|
|
||||||
|
foreach (string id in constraints.Keys)
|
||||||
|
{
|
||||||
|
if (this.constraints[id].Contains(resolvedId))
|
||||||
|
{
|
||||||
|
this.constraints[id].Remove(resolvedId);
|
||||||
|
|
||||||
|
// If we just removed the last constraint for this
|
||||||
|
// ID, it is now a valid start ID.
|
||||||
|
if (0 == this.constraints[id].Count)
|
||||||
|
{
|
||||||
|
newStartIds.Add(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string id in newStartIds)
|
||||||
|
{
|
||||||
|
this.constraints.Remove(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.startIds.AddRange(newStartIds);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,17 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Constants used by Utility Extension.
|
||||||
|
/// </summary>
|
||||||
|
internal static class UtilConstants
|
||||||
|
{
|
||||||
|
internal static readonly string[] FilePermissions = { "Read", "Write", "Append", "ReadExtendedAttributes", "WriteExtendedAttributes", "Execute", null, "ReadAttributes", "WriteAttributes" };
|
||||||
|
internal static readonly string[] FolderPermissions = { "Read", "CreateFile", "CreateChild", "ReadExtendedAttributes", "WriteExtendedAttributes", "Traverse", "DeleteChild", "ReadAttributes", "WriteAttributes" };
|
||||||
|
internal static readonly string[] GenericPermissions = { "GenericAll", "GenericExecute", "GenericWrite", "GenericRead" };
|
||||||
|
internal static readonly string[] RegistryPermissions = { "Read", "Write", "CreateSubkeys", "EnumerateSubkeys", "Notify", "CreateLink" };
|
||||||
|
internal static readonly string[] ServicePermissions = { "ServiceQueryConfig", "ServiceChangeConfig", "ServiceQueryStatus", "ServiceEnumerateDependents", "ServiceStart", "ServiceStop", "ServicePauseContinue", "ServiceInterrogate", "ServiceUserDefinedControl" };
|
||||||
|
internal static readonly string[] StandardPermissions = { "Delete", "ReadPermission", "ChangePermission", "TakeOwnership", "Synchronize" };
|
||||||
|
}
|
||||||
|
}
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,109 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Resources;
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public static class UtilErrors
|
||||||
|
{
|
||||||
|
public static Message ArgumentRequiresValue(string argument)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.ArgumentRequiresValue, "The argument '{0}' does not have a value specified and it is required.", argument);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message CircularSearchReference(string chain)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.CircularSearchReference, "A circular reference of search ordering constraints was detected: {0}. Search ordering references must form a directed acyclic graph.", chain);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message DirectoryNotFound(string directory)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.DirectoryNotFound, "The directory '{0}' could not be found.", directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message EmptyDirectory(string directory)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.EmptyDirectory, "The directory '{0}' did not contain any files or sub-directories and since empty directories are not being kept, there was nothing to harvest.", directory);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message ErrorTransformingHarvestedWiX(string transform, string message)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.ErrorTransformingHarvestedWiX, "Error applying transform {0} to harvested WiX: {1}", transform, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message FileNotFound(string file)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.FileNotFound, "The file '{0}' cannot be found.", file);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message IllegalAttributeWithoutComponent(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
|
||||||
|
{
|
||||||
|
return Message(sourceLineNumbers, Ids.IllegalAttributeWithoutComponent, "The {0}/@{1} attribute cannot be specified unless the element has a Component as an ancestor. A {0} that does not have a Component ancestor is not installed.", elementName, attributeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message IllegalElementWithoutComponent(SourceLineNumber sourceLineNumbers, string elementName)
|
||||||
|
{
|
||||||
|
return Message(sourceLineNumbers, Ids.IllegalElementWithoutComponent, "The {0} element cannot be specified unless the element has a Component as an ancestor. A {0} that does not have a Component ancestor is not installed.", elementName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message IllegalFileValueInPerfmonOrManifest(string file, string table)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.IllegalFileValueInPerfmonOrManifest, "The value '{0}' in the File column, {1} table is invalid. It should be in the form of '[#file]' or '[!file]'.", file, table);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message InvalidRegistryObject(SourceLineNumber sourceLineNumbers, string registryElementName)
|
||||||
|
{
|
||||||
|
return Message(sourceLineNumbers, Ids.InvalidRegistryObject, "The {0} element has no id and cannot have its permissions set. If you want to set permissions on a 'placeholder' registry key, force its creation by setting the ForceCreateOnInstall attribute to yes.", registryElementName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message PerformanceCategoryNotFound(string key)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.PerformanceCategoryNotFound, "Performance category '{0}' not found.", key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message SpacesNotAllowedInArgumentValue(string arg, string value)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.SpacesNotAllowedInArgumentValue, "The switch '{0}' does not allow the spaces from the value. Please remove the spaces in from the value: {1}", arg, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message UnableToOpenRegistryKey(string key)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.UnableToOpenRegistryKey, "Unable to open registry key '{0}'.", key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message UnsupportedPerformanceCounterType(string key)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.UnsupportedPerformanceCounterType, "Unsupported performance counter type '{0}'.", key);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args)
|
||||||
|
{
|
||||||
|
return new Message(sourceLineNumber, MessageLevel.Error, (int)id, format, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args)
|
||||||
|
{
|
||||||
|
return new Message(sourceLineNumber, MessageLevel.Error, (int)id, resourceManager, resourceName, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Ids
|
||||||
|
{
|
||||||
|
IllegalAttributeWithoutComponent = 5050,
|
||||||
|
IllegalElementWithoutComponent = 5051,
|
||||||
|
DirectoryNotFound = 5052,
|
||||||
|
EmptyDirectory = 5053,
|
||||||
|
IllegalFileValueInPerfmonOrManifest = 5054,
|
||||||
|
ErrorTransformingHarvestedWiX = 5055,
|
||||||
|
UnableToOpenRegistryKey = 5056,
|
||||||
|
SpacesNotAllowedInArgumentValue = 5057,
|
||||||
|
ArgumentRequiresValue = 5058,
|
||||||
|
FileNotFound = 5059,
|
||||||
|
PerformanceCategoryNotFound = 5060,
|
||||||
|
UnsupportedPerformanceCounterType = 5061,
|
||||||
|
CircularSearchReference = 5062,
|
||||||
|
InvalidRegistryObject = 5063,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using WixToolset.Data;
|
||||||
|
using WixToolset.Extensibility;
|
||||||
|
|
||||||
|
public sealed class UtilExtensionData : BaseExtensionData
|
||||||
|
{
|
||||||
|
public override bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition)
|
||||||
|
{
|
||||||
|
tupleDefinition = UtilTupleDefinitions.ByName(name);
|
||||||
|
return tupleDefinition != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions)
|
||||||
|
{
|
||||||
|
return Intermediate.Load(typeof(UtilExtensionData).Assembly, "WixToolset.Util.util.wixlib", tupleDefinitions);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using WixToolset.Extensibility;
|
||||||
|
|
||||||
|
public class UtilExtensionFactory : BaseExtensionFactory
|
||||||
|
{
|
||||||
|
protected override IEnumerable<Type> ExtensionTypes => new[]
|
||||||
|
{
|
||||||
|
typeof(UtilCompiler),
|
||||||
|
typeof(UtilExtensionData),
|
||||||
|
typeof(UtilWindowsInstallerBackendExtension),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using System;
|
||||||
|
using System.Resources;
|
||||||
|
using WixToolset.Data;
|
||||||
|
|
||||||
|
public static class UtilWarnings
|
||||||
|
{
|
||||||
|
public static Message AssemblyHarvestFailed(string file, string message)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.AssemblyHarvestFailed, "Could not harvest data from a file that was expected to be an assembly: {0}. If this file is not an assembly you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: {1}", file, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message DeprecatedPerfCounterElement(SourceLineNumber sourceLineNumbers)
|
||||||
|
{
|
||||||
|
return Message(sourceLineNumbers, Ids.DeprecatedPerfCounterElement, "The PerfCounter element has been deprecated. Please use the PerformanceCounter element instead.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message DuplicateDllRegistryEntry(string registryKey, string componentId)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.DuplicateDllRegistryEntry, "Ignoring the registry key '{0}', it has already been added to the component '{1}'.", registryKey, componentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message DuplicateDllRegistryEntry(string registryKey, string registryKeyValue, string componentId)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.DuplicateDllRegistryEntry, "Ignoring the registry key '{0}', it has already been added to the component '{2}'. The registry key value '{1}' will not be harvested.", registryKey, registryKeyValue, componentId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message RequiredAttributeForWindowsXP(SourceLineNumber sourceLineNumbers, string elementName, string attributeName)
|
||||||
|
{
|
||||||
|
return Message(sourceLineNumbers, Ids.RequiredAttributeForWindowsXP, "The {0}/@{1} attribute must be specified to successfully install on Windows XP. You can ignore this warning if this installation does not install on Windows XP.", elementName, attributeName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message SelfRegHarvestFailed(string file, string message)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.SelfRegHarvestFailed, "Could not harvest data from a file that was expected to be a SelfReg DLL: {0}. If this file does not support SelfReg you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the failure: {1}", file, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message TypeLibLoadFailed(string file, string message)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.TypeLibLoadFailed, "Could not load file that was expected to be a type library based off of file extension: {0}. If this file is not a type library you can ignore this warning. Otherwise, this error detail may be helpful to diagnose the load failure: {1}", file, message);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Message UnsupportedRegistryType(string registryValue, int regFileLineNumber, string unsupportedType)
|
||||||
|
{
|
||||||
|
return Message(null, Ids.UnsupportedRegistryType, "Ignoring the registry value '{0}' found on line {1}, because it is of a type unsupported by Windows Installer ({2}).", registryValue, regFileLineNumber, unsupportedType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Message Message(SourceLineNumber sourceLineNumber, Ids id, string format, params object[] args)
|
||||||
|
{
|
||||||
|
return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, format, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static Message Message(SourceLineNumber sourceLineNumber, Ids id, ResourceManager resourceManager, string resourceName, params object[] args)
|
||||||
|
{
|
||||||
|
return new Message(sourceLineNumber, MessageLevel.Warning, (int)id, resourceManager, resourceName, args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Ids
|
||||||
|
{
|
||||||
|
SelfRegHarvestFailed = 5150,
|
||||||
|
AssemblyHarvestFailed = 5151,
|
||||||
|
TypeLibLoadFailed = 5152,
|
||||||
|
DeprecatedPerfCounterElement = 5153,
|
||||||
|
RequiredAttributeForWindowsXP = 5154,
|
||||||
|
DuplicateDllRegistryEntry = 5156,
|
||||||
|
UnsupportedRegistryType = 5157,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,26 @@
|
||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace WixToolset.Util
|
||||||
|
{
|
||||||
|
using System.Linq;
|
||||||
|
using System.Xml;
|
||||||
|
using WixToolset.Data.WindowsInstaller;
|
||||||
|
using WixToolset.Extensibility;
|
||||||
|
|
||||||
|
public class UtilWindowsInstallerBackendExtension : BaseWindowsInstallerBackendExtension
|
||||||
|
{
|
||||||
|
private static readonly TableDefinition[] Tables = LoadTables();
|
||||||
|
|
||||||
|
protected override TableDefinition[] TableDefinitionsForTuples => Tables;
|
||||||
|
|
||||||
|
private static TableDefinition[] LoadTables()
|
||||||
|
{
|
||||||
|
using (var resourceStream = typeof(UtilWindowsInstallerBackendExtension).Assembly.GetManifestResourceStream("WixToolset.Util.tables.xml"))
|
||||||
|
using (var reader = XmlReader.Create(resourceStream))
|
||||||
|
{
|
||||||
|
var tables = TableDefinitionCollection.Load(reader);
|
||||||
|
return tables.ToArray();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
|
<RootNamespace>WixToolset.Util</RootNamespace>
|
||||||
|
<Description>WiX Toolset Utility Extension</Description>
|
||||||
|
<Title>WiX Toolset Util Extension</Title>
|
||||||
|
<IsTool>true</IsTool>
|
||||||
|
<ContentTargetFolders>build</ContentTargetFolders>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="$(MSBuildThisFileName).targets" />
|
||||||
|
<Content Include="util.xsd" PackagePath="tools" />
|
||||||
|
<EmbeddedResource Include="tables.xml" />
|
||||||
|
<EmbeddedResource Include="$(OutputPath)..\util.wixlib" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Data\src\WixToolset.Data\WixToolset.Data.csproj') " />
|
||||||
|
<ProjectReference Include="$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj" Condition=" '$(Configuration)' == 'Debug' And Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " />
|
||||||
|
<PackageReference Include="WixToolset.Extensibility" Version="4.0.*" Condition=" '$(Configuration)' == 'Release' Or !Exists('$(WixToolsetRootFolder)\Extensibility\src\WixToolset.Extensibility\WixToolset.Extensibility.csproj') " PrivateAssets="all" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\wixlib\util.wixproj" ReferenceOutputAssembly="false" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Nerdbank.GitVersioning" Version="2.1.7" PrivateAssets="all" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||||
|
<ItemGroup>
|
||||||
|
<WixExtension Include="$(MSBuildThisFileDirectory)..\tools\WixToolset.Util.wixext.dll" />
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,242 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<tableDefinitions xmlns="http://wixtoolset.org/schemas/v4/wi/tables">
|
||||||
|
<tableDefinition name="WixCloseApplication">
|
||||||
|
<columnDefinition name="WixCloseApplication" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token in table."/>
|
||||||
|
<columnDefinition name="Target" type="localized" length="0" modularize="property"
|
||||||
|
category="formatted" description="Name of executable to ensure is closed."/>
|
||||||
|
<columnDefinition name="Description" type="string" length="0" nullable="yes" localizable="yes" modularize="property"
|
||||||
|
category="formatted" description="Description string displayed to user when executable is in use."/>
|
||||||
|
<columnDefinition name="Condition" type="string" length="0" nullable="yes" localizable="yes" modularize="condition"
|
||||||
|
category="condition" description="Optional expression which skips the closing."/>
|
||||||
|
<columnDefinition name="Attributes" type="number" length="4"
|
||||||
|
minValue="0" maxValue="2147483647" description="A 32-bit word that specifies the attribute flags to be applied."/>
|
||||||
|
<columnDefinition name="Sequence" type="number" length="4" nullable="yes"
|
||||||
|
minValue="1" maxValue="2147483647" description="Sequence to order the closings by."/>
|
||||||
|
<columnDefinition name="Property" type="string" length="72" nullable="yes" localizable="yes" modularize="property"
|
||||||
|
category="identifier" description="Optional property that is set to the number of running instances of the app."/>
|
||||||
|
<columnDefinition name="TerminateExitCode" type="number" length="4" nullable="yes"
|
||||||
|
minValue="0" maxValue="2147483647" description="Exit code to return from a terminated application."/>
|
||||||
|
<columnDefinition name="Timeout" type="number" length="4" nullable="yes"
|
||||||
|
minValue="1" maxValue="2147483647" description="Timeout in milliseconds before scheduling restart or terminating application."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="WixRemoveFolderEx" createSymbols="yes">
|
||||||
|
<columnDefinition name="WixRemoveFolderEx" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Identifier for the WixRemoveFolderEx row in the package."/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
|
||||||
|
<columnDefinition name="Property" type="string" length="72" modularize="property"
|
||||||
|
category="identifier" description="Name of Property that contains the root of the directory tree to remove."/>
|
||||||
|
<columnDefinition name="InstallMode" type="number" length="2"
|
||||||
|
minValue="1" maxValue="3" description="1 == Remove only when the associated component is being installed (msiInstallStateLocal or msiInstallStateSource), 2 == Remove only when the associated component is being removed (msiInstallStateAbsent), 3 = Remove in either of the above cases."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="WixRestartResource">
|
||||||
|
<columnDefinition name="WixRestartResource" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized identifier."/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state."/>
|
||||||
|
<columnDefinition name="Resource" type="string" length="0" modularize="property"
|
||||||
|
category="formatted" description="The resource to be registered with the Restart Manager."/>
|
||||||
|
<columnDefinition name="Attributes" type="number" length="4"
|
||||||
|
minValue="0" maxValue="2147483647" description="A 32-bit word that specifies the type of resource and flags used for processing."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="FileShare" createSymbols="yes">
|
||||||
|
<columnDefinition name="FileShare" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized identifier"/>
|
||||||
|
<columnDefinition name="ShareName" type="string" length="255"
|
||||||
|
category="formatted" description="The actual share name used"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
|
||||||
|
<columnDefinition name="Description" type="string" length="255" nullable="yes"
|
||||||
|
category="text" description="Description string displayed for the file share"/>
|
||||||
|
<columnDefinition name="Directory_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Directory" keyColumn="1" category="identifier" description="Foreign key referencing directory that the share is created on"/>
|
||||||
|
<columnDefinition name="User_" type="string" length="72" modularize="column" nullable="yes"
|
||||||
|
keyTable="User" keyColumn="1" category="identifier" description="Foreign key, User to give access permissions to"/>
|
||||||
|
<columnDefinition name="Permissions" type="number" length="4" nullable="yes"
|
||||||
|
description="Permissions int, as on EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="FileSharePermissions">
|
||||||
|
<columnDefinition name="FileShare_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="FileShare" keyColumn="1" category="identifier" description="FileShare that these premissions are to be applied to."/>
|
||||||
|
<columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="User that these premissions are to apply to."/>
|
||||||
|
<columnDefinition name="Permissions" type="number" length="4"
|
||||||
|
description="Permissions int, as on EXPLICIT_ACCESS.grfAccessPermissions in MSDN"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="Group" createSymbols="yes">
|
||||||
|
<columnDefinition name="Group" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
|
||||||
|
<columnDefinition name="Name" type="string" length="255" modularize="property"
|
||||||
|
category="formatted" description="Group name"/>
|
||||||
|
<columnDefinition name="Domain" type="string" length="255" nullable="yes" modularize="property"
|
||||||
|
category="formatted" description="Group domain"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="WixInternetShortcut" createSymbols="yes">
|
||||||
|
<columnDefinition name="WixInternetShortcut" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token in table."/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
|
||||||
|
<columnDefinition name="Directory_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Directory" keyColumn="1" category="identifier" description="Foreign key referencing directory that the shortcut is created in"/>
|
||||||
|
<columnDefinition name="Name" type="string" length="72" modularize="property"
|
||||||
|
category="text" description="Name used for shortcut."/>
|
||||||
|
<columnDefinition name="Target" type="localized" length="0" escapeIdtCharacters="yes"
|
||||||
|
category="text" description="URL target."/>
|
||||||
|
<columnDefinition name="Attributes" type="number" length="2"
|
||||||
|
description="Attribute flags that control how the shortcut is created."/>
|
||||||
|
<columnDefinition name="IconFile" type="localized" length="0" escapeIdtCharacters="yes"
|
||||||
|
category="text" nullable="yes" description="Icon file for shortcut"/>
|
||||||
|
<columnDefinition name="IconIndex" type="number" length="4"
|
||||||
|
nullable="yes" description="Index of the icon being referenced."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="PerformanceCategory">
|
||||||
|
<columnDefinition name="PerformanceCategory" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token in table."/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
|
||||||
|
<columnDefinition name="Name" type="string" length="80"
|
||||||
|
category="text" description="Name of the performance counter category."/>
|
||||||
|
<columnDefinition name="IniData" type="localized" length="0" escapeIdtCharacters="yes"
|
||||||
|
category="text" description="Data that goes into the performance counter .ini file."/>
|
||||||
|
<columnDefinition name="ConstantData" type="localized" length="0" escapeIdtCharacters="yes"
|
||||||
|
category="text" description="Data that goes into the performance counter .h file."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="Perfmon">
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
|
||||||
|
<columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
|
||||||
|
category="formatted" description="Name of .INI file"/>
|
||||||
|
<columnDefinition name="Name" type="string" length="72" primaryKey="yes"
|
||||||
|
category="text" description="Service name in registry"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="PerfmonManifest">
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
|
||||||
|
<columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
|
||||||
|
category="formatted" description="Name of perfmon manifest file"/>
|
||||||
|
<columnDefinition name="ResourceFileDirectory" type="string" length="255" primaryKey="yes"
|
||||||
|
category="formatted" description="The path of the Resource File Directory"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="EventManifest">
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Component used to determine install state"/>
|
||||||
|
<columnDefinition name="File" type="string" length="72" primaryKey="yes" modularize="property"
|
||||||
|
category="formatted" description="Name of event manifest file"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="SecureObjects">
|
||||||
|
<columnDefinition name="SecureObject" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token in Table"/>
|
||||||
|
<columnDefinition name="Table" type="string" length="32" primaryKey="yes"
|
||||||
|
category="text" description="Table SecureObject should be securing"/>
|
||||||
|
<columnDefinition name="Domain" type="string" length="255" primaryKey="yes" nullable="yes" modularize="property"
|
||||||
|
category="text" description="Domain half of user account to secure"/>
|
||||||
|
<columnDefinition name="User" type="string" length="255" primaryKey="yes" modularize="property"
|
||||||
|
category="text" description="Username half of user account to secure"/>
|
||||||
|
<columnDefinition name="Permission" type="number" length="4" nullable="yes"
|
||||||
|
minValue="-2147483647" maxValue="2147483647" description="Permissions to grant to User"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="ServiceConfig">
|
||||||
|
<columnDefinition name="ServiceName" type="string" length="72" primaryKey="yes"
|
||||||
|
category="formatted" description="Primary key, non-localized token"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key, Component used to determine install state "/>
|
||||||
|
<columnDefinition name="NewService" type="number" length="1"
|
||||||
|
minValue="0" maxValue="1" description="Whether the affected service is being installed or already exists."/>
|
||||||
|
<columnDefinition name="FirstFailureActionType" type="string" length="32"
|
||||||
|
category="text" description="First failure action type for configured service to take."/>
|
||||||
|
<columnDefinition name="SecondFailureActionType" type="string" length="32"
|
||||||
|
category="text" description="Second failure action type for configured service to take."/>
|
||||||
|
<columnDefinition name="ThirdFailureActionType" type="string" length="32"
|
||||||
|
category="text" description="Third failure action type for configured service to take."/>
|
||||||
|
<columnDefinition name="ResetPeriodInDays" type="number" length="4" nullable="yes"
|
||||||
|
category="integer" minValue="0" description="Period after which to reset the failure count for the service."/>
|
||||||
|
<columnDefinition name="RestartServiceDelayInSeconds" type="number" length="4" nullable="yes"
|
||||||
|
category="integer" minValue="0" description="Period after which to restart the service after a given failure."/>
|
||||||
|
<columnDefinition name="ProgramCommandLine" type="string" length="255" nullable="yes"
|
||||||
|
category="formatted" description="Command line for program to run if failure action is RUN_COMMAND."/>
|
||||||
|
<columnDefinition name="RebootMessage" type="string" length="255" nullable="yes"
|
||||||
|
category="text" description="Message to show to users when rebooting if failure action is REBOOT."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="WixTouchFile" createSymbols="yes">
|
||||||
|
<columnDefinition name="WixTouchFile" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Identifier for the WixTouchFile row in the package."/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table used to determine install state"/>
|
||||||
|
<columnDefinition name="Path" type="string" length="255" modularize="property"
|
||||||
|
category="formatted" description="Formatted column that resolves to the path to touch."/>
|
||||||
|
<columnDefinition name="Attributes" type="number" length="2"
|
||||||
|
minValue="1" maxValue="63" description="1 == Touch only when the associated component is being installed, 2 == Touch only when the associated component is being repaired , 4 == Touch only when the associated component is being removed, 16 = path is in 64-bit location, 32 = touching the file is vital."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="User" createSymbols="yes">
|
||||||
|
<columnDefinition name="User" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" nullable="yes" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="text" description="Foreign key, Component used to determine install state"/>
|
||||||
|
<columnDefinition name="Name" type="string" length="255" modularize="property"
|
||||||
|
category="formatted" description="User name"/>
|
||||||
|
<columnDefinition name="Domain" type="string" length="255" nullable="yes" modularize="property"
|
||||||
|
category="formatted" description="User domain"/>
|
||||||
|
<columnDefinition name="Password" type="string" length="255" nullable="yes" modularize="property"
|
||||||
|
category="formatted" description="User password"/>
|
||||||
|
<columnDefinition name="Attributes" type="number" length="4" nullable="yes"
|
||||||
|
minValue="0" maxValue="65535" description="Attributes describing how to create the user"/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="UserGroup">
|
||||||
|
<columnDefinition name="User_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="User" keyColumn="1" category="identifier" description="User to be joined to a Group."/>
|
||||||
|
<columnDefinition name="Group_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="Group" keyColumn="1" category="identifier" description="User to be joined to a Group."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="XmlFile">
|
||||||
|
<columnDefinition name="XmlFile" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token."/>
|
||||||
|
<columnDefinition name="File" type="localized" length="255" modularize="property"
|
||||||
|
category="formatted" description="The .XML file in which to write the information"/>
|
||||||
|
<columnDefinition name="ElementPath" type="localized" length="0" modularize="property"
|
||||||
|
category="formatted" description="The .XML file element to modify."/>
|
||||||
|
<columnDefinition name="Name" type="localized" length="255" modularize="property" nullable="yes"
|
||||||
|
category="formatted" description="The .XML file node to set/add in the element."/>
|
||||||
|
<columnDefinition name="Value" type="localized" length="0" modularize="property" nullable="yes"
|
||||||
|
category="formatted" description="The value to be written."/>
|
||||||
|
<columnDefinition name="Flags" type="number" length="4"
|
||||||
|
minValue="0" maxValue="70143" description="Flags"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table referencing component that controls the installing of the .XML value."/>
|
||||||
|
<columnDefinition name="Sequence" type="number" length="2" nullable="yes"
|
||||||
|
description="Order to execute the XML modifications."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="XmlConfig" createSymbols="yes">
|
||||||
|
<columnDefinition name="XmlConfig" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
category="identifier" description="Primary key, non-localized token."/>
|
||||||
|
<columnDefinition name="File" type="localized" length="255" modularize="property"
|
||||||
|
category="formatted" description="The .XML file in which to write the information"/>
|
||||||
|
<columnDefinition name="ElementPath" type="localized" length="0" modularize="property"
|
||||||
|
category="formatted" description="The XPATH query for an element to modify or add children to. Can also be a foreign key reference to another XmlConfig row if no attributes are set and the row referenced is a create element row."/>
|
||||||
|
<columnDefinition name="VerifyPath" type="localized" length="0" modularize="property" nullable="yes"
|
||||||
|
category="formatted" description="The XPATH query run from ElementPath to verify whether a repair is necessary. Also used to uninstall."/>
|
||||||
|
<columnDefinition name="Name" type="localized" length="255" modularize="property" nullable="yes"
|
||||||
|
category="formatted" description="The .XML file node to set/add in the element."/>
|
||||||
|
<columnDefinition name="Value" type="localized" length="0" modularize="property" nullable="yes" escapeIdtCharacters="yes"
|
||||||
|
category="formatted" description="The value to be written."/>
|
||||||
|
<columnDefinition name="Flags" type="number" length="4"
|
||||||
|
minValue="0" maxValue="65536" description="Element=1,Value=2,Document=4,Create=16,Delete=32,Install=256,Uninstall=512"/>
|
||||||
|
<columnDefinition name="Component_" type="string" length="72" modularize="column"
|
||||||
|
keyTable="Component" keyColumn="1" category="identifier" description="Foreign key into the Component table referencing component that controls the installing of the .XML value."/>
|
||||||
|
<columnDefinition name="Sequence" type="number" length="2" nullable="yes"
|
||||||
|
description="Order to execute the XML modifications."/>
|
||||||
|
</tableDefinition>
|
||||||
|
<tableDefinition name="WixFormatFiles">
|
||||||
|
<columnDefinition name="Binary_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="Binary" keyColumn="1" category="identifier" description="Binary data to be formatted."/>
|
||||||
|
<columnDefinition name="File_" type="string" length="72" primaryKey="yes" modularize="column"
|
||||||
|
keyTable="File" keyColumn="1" category="identifier" description="File whose component controls the custom action and where the formatted data is written."/>
|
||||||
|
</tableDefinition>
|
||||||
|
</tableDefinitions>
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -0,0 +1,430 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
<?include caerr.wxi ?>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="ConfigureUsersErrorText">
|
||||||
|
<Error Id="$(var.msierrUSRFailedUserCreate)">!(loc.msierrUSRFailedUserCreate)</Error>
|
||||||
|
<Error Id="$(var.msierrUSRFailedUserCreatePswd)">!(loc.msierrUSRFailedUserCreatePswd)</Error>
|
||||||
|
<Error Id="$(var.msierrUSRFailedUserGroupAdd)">!(loc.msierrUSRFailedUserGroupAdd)</Error>
|
||||||
|
<Error Id="$(var.msierrUSRFailedGrantLogonAsService)">Failed to grant 'logon as service' rights to user. ([2] [3] [4] [5])</Error>
|
||||||
|
<Error Id="$(var.msierrUSRFailedUserCreateExists)">!(loc.msierrUSRFailedUserCreateExists)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="ConfigureSmbErrorsText">
|
||||||
|
<Error Id="$(var.msierrSMBFailedCreate)">!(loc.msierrSMBFailedCreate)</Error>
|
||||||
|
<Error Id="$(var.msierrSMBFailedDrop)">!(loc.msierrSMBFailedDrop)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="PerCounterDataErrorsText">
|
||||||
|
<Error Id="$(var.msierrInstallPerfCounterData)">!(loc.msierrInstallPerfCounterData)</Error>
|
||||||
|
<Error Id="$(var.msierrUninstallPerfCounterData)">!(loc.msierrUninstallPerfCounterData)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="ConfigurePerfmonErrorsText">
|
||||||
|
<Error Id="$(var.msierrPERFMONFailedRegisterDLL)">!(loc.msierrPERFMONFailedRegisterDLL)</Error>
|
||||||
|
<Error Id="$(var.msierrPERFMONFailedUnregisterDLL)">!(loc.msierrPERFMONFailedUnregisterDLL)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="SecureObjectsErrors">
|
||||||
|
<Error Id="$(var.msierrSecureObjectsFailedCreateSD)">!(loc.msierrSecureObjectsFailedCreateSD)</Error>
|
||||||
|
<Error Id="$(var.msierrSecureObjectsFailedSet)">!(loc.msierrSecureObjectsFailedSet)</Error>
|
||||||
|
<Error Id="$(var.msierrSecureObjectsUnknownType)">!(loc.msierrSecureObjectsUnknownType)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="XmlFileErrorsText">
|
||||||
|
<Error Id="$(var.msierrXmlFileFailedRead)">!(loc.msierrXmlFileFailedRead)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlFileFailedOpen)">!(loc.msierrXmlFileFailedOpen)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlFileFailedSelect)">!(loc.msierrXmlFileFailedSelect)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlFileFailedSave)">!(loc.msierrXmlFileFailedSave)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UI Id="XmlConfigErrorsText">
|
||||||
|
<Error Id="$(var.msierrXmlConfigFailedRead)">!(loc.msierrXmlConfigFailedRead)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlConfigFailedOpen)">!(loc.msierrXmlConfigFailedOpen)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlConfigFailedSelect)">!(loc.msierrXmlConfigFailedSelect)</Error>
|
||||||
|
<Error Id="$(var.msierrXmlConfigFailedSave)">!(loc.msierrXmlConfigFailedSave)</Error>
|
||||||
|
</UI>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixFailWhenDeferred" BinaryKey="WixCA" DllEntry="WixFailWhenDeferred" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixFailWhenDeferred" Before="InstallFinalize" Overridable="yes">WIXFAILWHENDEFERRED=1 AND VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixWaitForEvent" BinaryKey="WixCA" DllEntry="WixWaitForEvent" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixWaitForEvent" Before="InstallFinalize" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixWaitForEventDeferred" BinaryKey="WixCA" DllEntry="WixWaitForEvent" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixWaitForEventDeferred" After="InstallInitialize" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixExitEarlyWithSuccess" BinaryKey="WixCA" DllEntry="WixExitEarlyWithSuccess" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixExitEarlyWithSuccess" After="FindRelatedProducts" Overridable="yes">NEWERVERSIONDETECTED AND VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixRemoveFoldersEx" BinaryKey="WixCA" DllEntry="WixRemoveFoldersEx" Execute="immediate" Return="ignore" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixRemoveFoldersEx" Before="CostInitialize" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixBroadcastSettingChange" BinaryKey="WixCA" DllEntry="WixBroadcastSettingChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixBroadcastSettingChange" After="InstallFinalize" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixBroadcastEnvironmentChange" BinaryKey="WixCA" DllEntry="WixBroadcastEnvironmentChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixBroadcastEnvironmentChange" After="InstallFinalize" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<!-- WiX OS-detection properties and custom action -->
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixQueryOsInfo" BinaryKey="WixCA" DllEntry="WixQueryOsInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixQueryOsInfo" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
<InstallUISequence>
|
||||||
|
<Custom Action="WixQueryOsInfo" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallUISequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_BACKOFFICE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_BLADE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_COMMUNICATIONS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_COMPUTE_SERVER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_DATACENTER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_EMBEDDED_RESTRICTED" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_EMBEDDEDNT" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_ENTERPRISE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_MEDIACENTER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_PERSONAL" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_SECURITY_APPLIANCE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_SERVERR2" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_SINGLEUSERTS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_SMALLBUSINESS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_SMALLBUSINESS_RESTRICTED" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_STARTER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_STORAGE_SERVER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_TABLETPC" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_TERMINAL" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_SUITE_WH_SERVER" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsInfo" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixQueryOsDirs" BinaryKey="WixCA" DllEntry="WixQueryOsDirs" Execute="firstSequence" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixQueryOsDirs" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
<InstallUISequence>
|
||||||
|
<Custom Action="WixQueryOsDirs" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallUISequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_ADMINTOOLS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_ALTSTARTUP" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_CDBURN_AREA" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_ADMINTOOLS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_ALTSTARTUP" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_DOCUMENTS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_FAVORITES" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_MUSIC" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_PICTURES" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COMMON_VIDEO" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_COOKIES" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_DESKTOP" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_HISTORY" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_INTERNET_CACHE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_MYMUSIC" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_MYPICTURES" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_MYVIDEO" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_NETHOOD" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_PERSONAL" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_PRINTHOOD" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_PROFILE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_RECENT" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DIR_RESOURCES" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDirs" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixQueryOsWellKnownSID" BinaryKey="WixCA" DllEntry="WixQueryOsWellKnownSID" Execute="firstSequence" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixQueryOsWellKnownSID" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
<InstallUISequence>
|
||||||
|
<Custom Action="WixQueryOsWellKnownSID" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallUISequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_LOCALSYSTEM" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_LOCALSERVICE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_NETWORKSERVICE" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_ADMINISTRATORS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_USERS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_GUESTS" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_ACCOUNT_PERFLOGUSERS" Secure="yes" />
|
||||||
|
<Property Id="WIX_ACCOUNT_PERFLOGUSERS_NODOMAIN" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsWellKnownSID" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixQueryOsDriverInfo" BinaryKey="WixCA" DllEntry="WixQueryOsDriverInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixQueryOsDriverInfo" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
|
||||||
|
<InstallUISequence>
|
||||||
|
<Custom Action="WixQueryOsDriverInfo" After="AppSearch" Overridable="yes">VersionNT > 400 OR (VersionNT = 400 AND ServicePackLevel > 3)</Custom>
|
||||||
|
</InstallUISequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_WDDM_DRIVER_PRESENT" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDriverInfo" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Property Id="WIX_DWM_COMPOSITION_ENABLED" Secure="yes" />
|
||||||
|
<CustomActionRef Id="WixQueryOsDriverInfo" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<!-- ShellExec custom actions (for when only one is needed; multiple executions need their own IDs) -->
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixShellExecBinaryId" />
|
||||||
|
<CustomAction Id="WixShellExecBinary" BinaryKey="WixCA" DllEntry="WixShellExecBinary" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixShellExecTarget" />
|
||||||
|
<CustomAction Id="WixShellExec" BinaryKey="WixCA" DllEntry="WixShellExec" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixUnelevatedShellExecTarget" />
|
||||||
|
<CustomAction Id="WixUnelevatedShellExec" BinaryKey="WixCA" DllEntry="WixUnelevatedShellExec" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="QtExecCmdLine" />
|
||||||
|
<CustomAction Id="QtExec" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="QtExec64CmdLine" />
|
||||||
|
<CustomAction Id="QtExec64" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixQuietExecCmdLine" />
|
||||||
|
<CustomAction Id="WixQuietExec" BinaryKey="WixCA" DllEntry="WixQuietExec" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixQuietExec64CmdLine" />
|
||||||
|
<CustomAction Id="WixQuietExec64" BinaryKey="WixCA" DllEntry="WixQuietExec64" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<!-- SilentExec custom actions differ from QtExec in that they do not log the commandline or output of the exe -->
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixSilentExecCmdLine" />
|
||||||
|
<CustomAction Id="WixSilentExec" BinaryKey="WixCA" DllEntry="WixSilentExec" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<PropertyRef Id="WixSilentExec64CmdLine" />
|
||||||
|
<CustomAction Id="WixSilentExec64" BinaryKey="WixCA" DllEntry="WixSilentExec64" Execute="immediate" Return="check" Impersonate="yes" />
|
||||||
|
</Fragment>
|
||||||
|
</Wix>
|
|
@ -0,0 +1,224 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
|
||||||
|
<?include caSuffix.wxi ?>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The following actions do not support X64.
|
||||||
|
-->
|
||||||
|
<?if $(var.platform)!=x64 ?>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixCheckRebootRequired$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixCheckRebootRequired" Execute="immediate" Return="ignore" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<!-- Condition this so it runs on install and MMode, but not uninstall -->
|
||||||
|
<Custom Action="WixCheckRebootRequired$(var.Suffix)" After="InstallFinalize" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixCloseApplications$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixCloseApplications" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixCloseApplicationsDeferred$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixCloseApplicationsDeferred" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomActionRef Id="WixCheckRebootRequired$(var.Suffix)" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixCloseApplications$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixRegisterRestartResources$(var.Suffix)" BinaryKey="WixCA" DllEntry="WixRegisterRestartResources$(var.Suffix)" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixRegisterRestartResources$(var.Suffix)" Before="InstallValidate" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="ConfigureUsersErrorText" />
|
||||||
|
|
||||||
|
<CustomAction Id="ConfigureUsers$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigureUsers" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="CreateUser$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CreateUser" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="CreateUserRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<!-- RemoveUser is a type commit action because it is not possible to rollback the removal of a user -->
|
||||||
|
<CustomAction Id="RemoveUser$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="commit" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="ConfigureUsers$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="ConfigureSmbErrorsText" />
|
||||||
|
|
||||||
|
<CustomAction Id="ConfigureSmbInstall$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigureSmbInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ConfigureSmbUninstall$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigureSmbUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="CreateSmb$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="CreateSmbRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="DropSmb$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="DropSmbRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="ConfigureSmbInstall$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="ConfigureSmbUninstall$(var.Suffix)" After="RemoveFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="PerCounterDataErrorsText" />
|
||||||
|
|
||||||
|
<CustomAction Id="InstallPerfCounterData$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="InstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="UninstallPerfCounterData$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="UninstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RegisterPerfCounterData$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="UnregisterPerfCounterData$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackRegisterPerfCounterData$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackUnregisterPerfCounterData$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="InstallPerfCounterData$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="UninstallPerfCounterData$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="ConfigurePerfmonErrorsText" />
|
||||||
|
|
||||||
|
<CustomAction Id="ConfigurePerfmonInstall$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ConfigurePerfmonUninstall$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RegisterPerfmon$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="UnregisterPerfmon$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackRegisterPerfmon$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackUnregisterPerfmon$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="ConfigurePerfmonInstall$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="ConfigurePerfmonUninstall$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="ConfigurePerfmonManifestRegister$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ConfigurePerfmonManifestUnregister$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RegisterPerfmonManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="UnregisterPerfmonManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackRegisterPerfmonManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackUnregisterPerfmonManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="ConfigurePerfmonManifestRegister$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="ConfigurePerfmonManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="ConfigureEventManifestRegister$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ConfigureEventManifestUnregister$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RegisterEventManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="UnregisterEventManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackRegisterEventManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackUnregisterEventManifest$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="ConfigureEventManifestRegister$(var.Suffix)" After="SchedXmlFile" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="ConfigureEventManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="SchedServiceConfig$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="SchedServiceConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecServiceConfig$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecServiceConfig" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="RollbackServiceConfig$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="RollbackServiceConfig" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<!-- Condition this so it runs on install and MMode, but not uninstall -->
|
||||||
|
<Custom Action="SchedServiceConfig$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixTouchFileDuringInstall" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixTouchFileDuringUninstall" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixExecuteTouchFile" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixRollbackTouchFile" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixTouchFileDuringUninstall" Before="RemoveFiles" Overridable="yes" />
|
||||||
|
<Custom Action="WixTouchFileDuringInstall" After="InstallFiles" Overridable="yes" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="XmlFileErrorsText" />
|
||||||
|
|
||||||
|
<CustomAction Id="SchedXmlFile$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="SchedXmlFile" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecXmlFile$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecXmlFile" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecXmlFileRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecXmlFileRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="SchedXmlFile$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="XmlConfigErrorsText" />
|
||||||
|
|
||||||
|
<CustomAction Id="SchedXmlConfig$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="SchedXmlConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecXmlConfig$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecXmlConfig" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecXmlConfigRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecXmlConfigRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="SchedXmlConfig$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixSchedInternetShortcuts$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixSchedInternetShortcuts" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixRollbackInternetShortcuts$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixRollbackInternetShortcuts" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixCreateInternetShortcuts$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixCreateInternetShortcuts" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixSchedInternetShortcuts$(var.Suffix)" Before="RemoveFolders" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="WixRollbackInternetShortcuts$(var.DeferredSuffix)" Before="WixCreateInternetShortcuts$(var.DeferredSuffix)" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
<Custom Action="WixCreateInternetShortcuts$(var.DeferredSuffix)" After="CreateShortcuts" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
The following actions do support all platforms.
|
||||||
|
-->
|
||||||
|
<Fragment>
|
||||||
|
<UIRef Id="SecureObjectsErrors" />
|
||||||
|
|
||||||
|
<CustomAction Id="SchedSecureObjects$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="SchedSecureObjects" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="SchedSecureObjectsRollback$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="SchedSecureObjectsRollback" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecSecureObjects$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecSecureObjects" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="ExecSecureObjectsRollback$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="ExecSecureObjectsRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<!-- Condition this so it runs on install and MMode, but not uninstall -->
|
||||||
|
<Custom Action="SchedSecureObjects$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
|
||||||
|
<Custom Action="SchedSecureObjectsRollback$(var.Suffix)" After="UnpublishFeatures" Overridable="yes">VersionNT > 400</Custom>
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<CustomAction Id="WixSchedFormatFiles$(var.Suffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixSchedFormatFiles" Execute="immediate" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixExecFormatFiles$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
<CustomAction Id="WixRollbackFormatFiles$(var.DeferredSuffix)" BinaryKey="UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
|
||||||
|
|
||||||
|
<InstallExecuteSequence>
|
||||||
|
<Custom Action="WixSchedFormatFiles$(var.Suffix)" After="InstallFiles" />
|
||||||
|
</InstallExecuteSequence>
|
||||||
|
</Fragment>
|
||||||
|
|
||||||
|
<Fragment>
|
||||||
|
<Binary Id="UtilCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilca.dll" />
|
||||||
|
</Fragment>
|
||||||
|
</Include>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
<?define platform=x64 ?>
|
||||||
|
<?include UtilExtension_Platform.wxi ?>
|
||||||
|
</Wix>
|
|
@ -0,0 +1,8 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
<?define platform=x86 ?>
|
||||||
|
<?include UtilExtension_Platform.wxi ?>
|
||||||
|
</Wix>
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
|
||||||
|
<?ifndef platform ?>
|
||||||
|
<?error Required value "platform" not defined in include caSuffix.wxi ?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<?ifdef Suffix ?>
|
||||||
|
<?undef Suffix ?>
|
||||||
|
<?undef DeferredSuffix ?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<?if $(var.platform)="x86" ?>
|
||||||
|
<?define Suffix="" ?>
|
||||||
|
<?define DeferredSuffix="" ?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<?if $(var.platform)="x64" ?>
|
||||||
|
<?define Suffix="_x64" ?>
|
||||||
|
<?define DeferredSuffix="_64" ?>
|
||||||
|
<?endif ?>
|
||||||
|
|
||||||
|
<?if $(var.platform)="arm" ?>
|
||||||
|
<?define Suffix="_ARM" ?>
|
||||||
|
<?define DeferredSuffix="_ARM" ?>
|
||||||
|
<?endif ?>
|
||||||
|
</Include>
|
|
@ -0,0 +1,96 @@
|
||||||
|
<Include>
|
||||||
|
<?define msierrSecureObjectsFailedCreateSD = 25520?>
|
||||||
|
<?define msierrSecureObjectsFailedSet = 25521?>
|
||||||
|
<?define msierrSecureObjectsUnknownType = 25522?>
|
||||||
|
<?define msierrXmlFileFailedRead = 25530?>
|
||||||
|
<?define msierrXmlFileFailedOpen = 25531?>
|
||||||
|
<?define msierrXmlFileFailedSelect = 25532?>
|
||||||
|
<?define msierrXmlFileFailedSave = 25533?>
|
||||||
|
<?define msierrXmlConfigFailedRead = 25540?>
|
||||||
|
<?define msierrXmlConfigFailedOpen = 25541?>
|
||||||
|
<?define msierrXmlConfigFailedSelect = 25542?>
|
||||||
|
<?define msierrXmlConfigFailedSave = 25543?>
|
||||||
|
<?define msierrFirewallCannotConnect = 25580?>
|
||||||
|
<?define msierrIISCannotConnect = 26001?>
|
||||||
|
<?define msierrIISFailedReadWebSite = 26002?>
|
||||||
|
<?define msierrIISFailedReadWebDirs = 26003?>
|
||||||
|
<?define msierrIISFailedReadVDirs = 26004?>
|
||||||
|
<?define msierrIISFailedReadFilters = 26005?>
|
||||||
|
<?define msierrIISFailedReadAppPool = 26006?>
|
||||||
|
<?define msierrIISFailedReadMimeMap = 26007?>
|
||||||
|
<?define msierrIISFailedReadProp = 26008?>
|
||||||
|
<?define msierrIISFailedReadWebSvcExt = 26009?>
|
||||||
|
<?define msierrIISFailedReadWebError = 26010?>
|
||||||
|
<?define msierrIISFailedReadHttpHeader = 26011?>
|
||||||
|
<?define msierrIISFailedSchedTransaction = 26031?>
|
||||||
|
<?define msierrIISFailedSchedInstallWebs = 26032?>
|
||||||
|
<?define msierrIISFailedSchedInstallWebDirs = 26033?>
|
||||||
|
<?define msierrIISFailedSchedInstallVDirs = 26034?>
|
||||||
|
<?define msierrIISFailedSchedInstallFilters = 26035?>
|
||||||
|
<?define msierrIISFailedSchedInstallAppPool = 26036?>
|
||||||
|
<?define msierrIISFailedSchedInstallProp = 26037?>
|
||||||
|
<?define msierrIISFailedSchedInstallWebSvcExt = 26038?>
|
||||||
|
<?define msierrIISFailedSchedUninstallWebs = 26051?>
|
||||||
|
<?define msierrIISFailedSchedUninstallWebDirs = 26052?>
|
||||||
|
<?define msierrIISFailedSchedUninstallVDirs = 26053?>
|
||||||
|
<?define msierrIISFailedSchedUninstallFilters = 26054?>
|
||||||
|
<?define msierrIISFailedSchedUninstallAppPool = 26055?>
|
||||||
|
<?define msierrIISFailedSchedUninstallProp = 26056?>
|
||||||
|
<?define msierrIISFailedSchedUninstallWebSvcExt = 26057?>
|
||||||
|
<?define msierrIISFailedStartTransaction = 26101?>
|
||||||
|
<?define msierrIISFailedOpenKey = 26102?>
|
||||||
|
<?define msierrIISFailedCreateKey = 26103?>
|
||||||
|
<?define msierrIISFailedWriteData = 26104?>
|
||||||
|
<?define msierrIISFailedCreateApp = 26105?>
|
||||||
|
<?define msierrIISFailedDeleteKey = 26106?>
|
||||||
|
<?define msierrIISFailedDeleteApp = 26107?>
|
||||||
|
<?define msierrIISFailedDeleteValue = 26108?>
|
||||||
|
<?define msierrIISFailedCommitInUse = 26109?>
|
||||||
|
<?define msierrSQLFailedCreateDatabase = 26201?>
|
||||||
|
<?define msierrSQLFailedDropDatabase = 26202?>
|
||||||
|
<?define msierrSQLFailedConnectDatabase = 26203?>
|
||||||
|
<?define msierrSQLFailedExecString = 26204?>
|
||||||
|
<?define msierrSQLDatabaseAlreadyExists = 26205?>
|
||||||
|
<?define msierrPERFMONFailedRegisterDLL = 26251?>
|
||||||
|
<?define msierrPERFMONFailedUnregisterDLL = 26252?>
|
||||||
|
<?define msierrInstallPerfCounterData = 26253?>
|
||||||
|
<?define msierrUninstallPerfCounterData = 26254?>
|
||||||
|
<?define msierrSMBFailedCreate = 26301?>
|
||||||
|
<?define msierrSMBFailedDrop = 26302?>
|
||||||
|
<?define msierrCERTFailedOpen = 26351?>
|
||||||
|
<?define msierrCERTFailedAdd = 26352?>
|
||||||
|
<?define msierrUSRFailedUserCreate = 26401?>
|
||||||
|
<?define msierrUSRFailedUserCreatePswd = 26402?>
|
||||||
|
<?define msierrUSRFailedUserGroupAdd = 26403?>
|
||||||
|
<?define msierrUSRFailedUserCreateExists = 26404?>
|
||||||
|
<?define msierrUSRFailedGrantLogonAsService = 26405?>
|
||||||
|
<?define msierrDependencyMissingDependencies = 26451?>
|
||||||
|
<?define msierrDependencyHasDependents = 26452?>
|
||||||
|
<?define msierrDotNetRuntimeRequired = 27000?>
|
||||||
|
<?define msierrComPlusCannotConnect = 28001?>
|
||||||
|
<?define msierrComPlusPartitionReadFailed = 28002?>
|
||||||
|
<?define msierrComPlusPartitionRoleReadFailed = 28003?>
|
||||||
|
<?define msierrComPlusUserInPartitionRoleReadFailed = 28004?>
|
||||||
|
<?define msierrComPlusPartitionUserReadFailed = 28005?>
|
||||||
|
<?define msierrComPlusApplicationReadFailed = 28006?>
|
||||||
|
<?define msierrComPlusApplicationRoleReadFailed = 28007?>
|
||||||
|
<?define msierrComPlusUserInApplicationRoleReadFailed = 28008?>
|
||||||
|
<?define msierrComPlusAssembliesReadFailed = 28009?>
|
||||||
|
<?define msierrComPlusSubscriptionReadFailed = 28010?>
|
||||||
|
<?define msierrComPlusPartitionDependency = 28011?>
|
||||||
|
<?define msierrComPlusPartitionNotFound = 28012?>
|
||||||
|
<?define msierrComPlusPartitionIdConflict = 28013?>
|
||||||
|
<?define msierrComPlusPartitionNameConflict = 28014?>
|
||||||
|
<?define msierrComPlusApplicationDependency = 28015?>
|
||||||
|
<?define msierrComPlusApplicationNotFound = 28016?>
|
||||||
|
<?define msierrComPlusApplicationIdConflict = 28017?>
|
||||||
|
<?define msierrComPlusApplicationNameConflict = 28018?>
|
||||||
|
<?define msierrComPlusApplicationRoleDependency = 28019?>
|
||||||
|
<?define msierrComPlusApplicationRoleNotFound = 28020?>
|
||||||
|
<?define msierrComPlusApplicationRoleConflict = 28021?>
|
||||||
|
<?define msierrComPlusAssemblyDependency = 28022?>
|
||||||
|
<?define msierrComPlusSubscriptionIdConflict = 28023?>
|
||||||
|
<?define msierrComPlusSubscriptionNameConflict = 28024?>
|
||||||
|
<?define msierrComPlusFailedLookupNames = 28025?>
|
||||||
|
<?define msierrMsmqCannotConnect = 28101?>
|
||||||
|
</Include>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<WixLocalization Culture="de-de" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">Konnte den Benutzer nicht anlegen. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">Konnte den Benutzer auf Grund eines falschen Passwortes nicht anlegen. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">Konnte Benutzer nicht zur Gruppe hinzufügen. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">Konnte den Benutzer nicht anlegen, da er bereits existierte. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">Konnte Netzwerkfreigabe nicht anlegen. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">Konnte Netzwerkfreigabe nicht entfernen. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">Konnte die DLL nicht für PerfMon registrieren. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">Konnte die DLL nicht für PerfMon deregistrieren. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">Konnte die Daten der Leistungsüberwachung (performance counters) nicht installieren. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">Konnte die Daten der Leistungsüberwachung (performance counters) nicht deinstallieren. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">Konnte keinen Security Descriptor für [3]\[4] erstellen, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">Konnte keinen Security Descriptor für das Objekt [3] erstellen, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Unbekannter Objekt Typ [3], System Fehler: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">Beim Lesen der XML Dateien trat ein Fehler auf.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Konnte XML Datei [3] nicht öffnen, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Konnte Knoten [3] in der XML Datei [4] nicht finden, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Beim Speichern der Änderungen an der XML Datei [3] trat ein Fehler auf, System Fehler: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">Bei der Konfiguration der XML Dateien trat ein Fehler auf.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Konnte XML Datei [3] nicht öffnen, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Konnte Knoten [3] in der XML Datei [4] nicht finden, System Fehler: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Beim Speichern der Änderungen an der XML Datei [3] trat ein Fehler auf, System Fehler: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<WixLocalization Culture="en-us" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">Failed to create user. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">Failed to create user due to invalid password. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">Failed to add user to group. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">Failed to create user because it already exists. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">Failed to create network share. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">Failed to drop network share. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">Failed to register DLL with PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">Failed to unregister DLL with PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">Failed to install performance counters. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">Failed to uninstall performance counters. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">Failed to create security descriptor for [3]\[4], system error: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">Failed to set security descriptor on object [3], system error: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Unknown Object Type [3], system error: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">There was a failure while configuring XML files.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Failed to open XML file [3], system error: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Failed to find node: [3] in XML file: [4], system error: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Failed to save changes to XML file [3], system error: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">There was a failure while configuring XML files.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Failed to open XML file [3], system error: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Failed to find node: [3] in XML file: [4], system error: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Failed to save changes to XML file [3], system error: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<WixLocalization Culture="es-es" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">La creación del usuario ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">La creación del usuario ha fracasado porque la contraseña es incorrecta. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">El aditamento del usuario al grupo ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">La creación del usuario ha fracasado porque ya existe. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">La creación de la red compartida ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">La eliminación de la red compartida ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">La inscripción al registro de la DLL con PerfMon ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">La cancelación de la inscripción al registro de la DLL con PerfMon ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">La instalación de los contadores de rendimiento ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">La desinstalación de los contadores de rendimiento ha fracasado. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">La creación de los ACLs ha fracasado por [3]\[4], error del sistema : [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">El posicionamiento de los ACLs por el objecto [3] ha fracasado, error del sistema: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Tipo de objecto no conocido [3], error del sistema: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">Un problema ha aparecido durante la configuración de los ficheros XML.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Fracaso de la apertura de los ficheros XML [3], error del sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Fracaso de la búsqueda del nodo: [3] en el fichero XML: [4], error del sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Fracaso durante la salvaguardia de las modificaciones en el fichero XML [3], error del sistema: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">Un problema ha aparecido durante la configuración de los ficheros XML.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Fracaso de la apertura de los ficheros XML [3], error del sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Fracaso de la búsqueda del nodo: [3] en el fichero XML: [4], error del sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Fracaso durante la salvaguardia de las modificaciones en el fichero XML [3], error del sistema: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
<WixLocalization Culture="fr-fr" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">La création de l'utilisateur a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">La création de l'utilisateur a échoué car le mot de passe est invalide. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">L'ajout de l'utilisateur au groupe a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">La création de l'utilisateur a échoué car il existe dejà. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">La création du partage reseau a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">La suppression du partage reseau a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">L'inscription au registre de la DLL avec PerfMon a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">La desinscription au registre de la DLL avec PerfMon a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">L'installation des compteurs de performance a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">La desinstallation des compteurs de performance a échoué. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">La création des ACLs a échoué pour [3]\[4], erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">Le positionnement des ACLs pour l'objet [3] a échoué, erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Type d'objet inconnu [3], erreur systeme: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">Un problème est survenu lors de la configuration des fichiers XML.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Echec de l'ouverture des fichiers XML [3], erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Echec de la recherche du noeud: [3] dans le fichier XML: [4], erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Echec lors de la sauvegarde des modifications dans le fichier XML [3], erreur systeme: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">Un problème est survenu lors de la configuration des fichiers XML.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Echec de l'ouverture des fichiers XML [3], erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Echec de la recherche du noeud: [3] dans le fichier XML: [4], erreur systeme: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Echec lors de la sauvegarde des modifications dans le fichier XML [3], erreur systeme: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<WixLocalization Culture="it-it" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">Impossibile creare l'utente. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">Impossibile creare l'utente perchè la password è errata. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">Impossibile aggiungere l'utente al gruppo. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">Impossibile creare l'utente perchè già esistente. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">Impossibile creare la risorsa di rete. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">Impossibile eliminare la risorsa di rete. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">Impossibile registrare la DLL con PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">Impossibile rimuovere la registrazione della DLL con PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">Impossibile installare i contatori delle prestazioni. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">Impossibile rimuovere i contatori delle prestazioni. ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">Impossibile creare i descrittori di sicurezza per [3]\[4], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">Impossibile impostare i descrittori di sicurezza sull'oggetto [3], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Tipo di oggetto sconosciuto [3], errore di sistema: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">Si è verificato un errore durante la configurazione dei file XML.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Impossibile aprire il file XML [3], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Impossibile trovare il nodo: [3] nel file XML: [4], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Impossible salvare le modifiche al file XML [3], errore di sistema: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">Si è verificato un errore durante la configurazione dei file XML.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Impossibile aprire il file XML [3], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Impossibile trovare il nodo: [3] nel file XML: [4], errore di sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Impossibile salvare le modifiche al file XML [3], errore di sitema: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,33 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<WixLocalization Culture="ja-jp" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">ユーザー作成に失敗しました。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">パスワードが無効のためユーザー作成に失敗しました。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">ユーザーをグループに追加でいませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">ユーザーが既に存在するため作成できませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">ネットワーク共有の作成に失敗しました。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">ネットワーク共有の削除に失敗しました。 ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">DLL を PerfMon に登録でいませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">DLL を PerfMon より登録解除できませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">パフォーマンス カウンタをインストールできませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">パフォーマンス カウンタをアンインストールできませんでした。 ([2] [3] [4] [5])</String>
|
||||||
|
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">[3]\[4] 用セキュリティ ディスクリプターを作成できませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">オブジェクト [3] 上のセキュリティ ディスクリプターを設定できませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">不明なオブジェクト種別 [3]、システム エラー: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">XML ファイル構成中に失敗しました。</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">XML ファイル [3] を開けませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">XML ファイル [4] 内にノード [3] が見つかりませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">XML ファイル [3] へ変更を保存できませんでした、システム エラー: [2]</String>
|
||||||
|
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">XML ファイル構成中に失敗しました。</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">XML ファイル [3] を開けませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">XML ファイル [4] 内にノード [3] が見つかりませんでした、システム エラー: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">XML ファイル [3] へ変更を保存できませんでした、システム エラー: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,5 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Nerdbank.GitVersioning" version="2.1.7" developmentDependency="true" targetFramework="net40" />
|
||||||
|
<package id="WixToolset.Core.InternalPackage" version="4.0.60" targetFramework="net40" developmentDependency="true" />
|
||||||
|
</packages>
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
|
||||||
|
|
||||||
|
<WixLocalization Culture="pt-br" xmlns="http://wixtoolset.org/schemas/v4/wxl">
|
||||||
|
<String Id="msierrUSRFailedUserCreate" Overridable="yes">Falha ao criar usuário. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">Falha ao criar usuário devido a senha inválida. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">Falha ao adicionar o usuário ao grupo. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">Falha ao criar o usuário, porque ele já existe. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedCreate" Overridable="yes">Falha ao criar o compartilhamento de rede. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSMBFailedDrop" Overridable="yes">Falha ao cair compartilhamento de rede. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">Falha ao registrar DLL com PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">Falha ao cancelar o registro de DLL com PerfMon. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrInstallPerfCounterData" Overridable="yes">Falha ao instalar contadores de desempenho. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrUninstallPerfCounterData" Overridable="yes">Falha ao desinstalar contadores de desempenho. ([2] [3] [4] [5])</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">Falha ao criar o descritor de segurança [3] \ [4], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">Falha ao definir o descritor de segurança sobre o objeto [3], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">Objeto Desconhecido Tipo [3], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedRead" Overridable="yes">Houve uma falha ao configurar arquivos XML.</String>
|
||||||
|
<String Id="msierrXmlFileFailedOpen" Overridable="yes">Falha ao abrir o arquivo XML [3], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSelect" Overridable="yes">Falha ao localizar nó: [3] no arquivo XML: [4], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlFileFailedSave" Overridable="yes">Falha ao salvar as alterações para o arquivo XML [3], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedRead" Overridable="yes">Houve uma falha ao configurar arquivos XML.</String>
|
||||||
|
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">Falha ao abrir o arquivo XML [3], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">Falha ao localizar nó: [3] no arquivo XML: [4], erro do sistema: [2]</String>
|
||||||
|
<String Id="msierrXmlConfigFailedSave" Overridable="yes">Falha ao salvar as alterações para o arquivo XML [3], erro do sistema: [2]</String>
|
||||||
|
</WixLocalization>
|
|
@ -0,0 +1,52 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- 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. -->
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
|
||||||
|
<Import Project="..\..\packages\WixToolset.Core.InternalPackage.4.0.60\build\WixToolset.Core.InternalPackage.props" Condition="Exists('..\..\packages\WixToolset.Core.InternalPackage.4.0.60\build\WixToolset.Core.InternalPackage.props')" />
|
||||||
|
<Import Project="..\FindLocalWix.props" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<ProjectGuid>{1ACFFEFD-505A-41A5-ACBF-A02B7B473AA2}</ProjectGuid>
|
||||||
|
<OutputName>util</OutputName>
|
||||||
|
<OutputType>Library</OutputType>
|
||||||
|
<BindFiles>true</BindFiles>
|
||||||
|
<Pedantic>true</Pedantic>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Include="UtilExtension.wxs" />
|
||||||
|
<Compile Include="UtilExtension_x86.wxs" />
|
||||||
|
<Compile Include="UtilExtension_x64.wxs" />
|
||||||
|
<EmbeddedResource Include="en-us.wxl" />
|
||||||
|
<EmbeddedResource Include="de-de.wxl" />
|
||||||
|
<EmbeddedResource Include="es-es.wxl" />
|
||||||
|
<EmbeddedResource Include="fr-fr.wxl" />
|
||||||
|
<EmbeddedResource Include="ja-jp.wxl" />
|
||||||
|
<EmbeddedResource Include="pt-br.wxl" />
|
||||||
|
<EmbeddedResource Include="it-it.wxl" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="packages.config" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\ca\utilca.vcxproj">
|
||||||
|
<Name>utilca</Name>
|
||||||
|
<Project>{076018F7-19BD-423A-ABBF-229273DA08D8}</Project>
|
||||||
|
</ProjectReference>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="caerr.wxi" />
|
||||||
|
<None Include="caSuffix.wxi" />
|
||||||
|
<None Include="UtilExtension_Platform.wxi" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' AND Exists('$(WixTargetsPath)') " />
|
||||||
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets') " />
|
||||||
|
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
|
||||||
|
<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/." />
|
||||||
|
</Target>
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<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>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.7\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.7\build\Nerdbank.GitVersioning.targets'))" />
|
||||||
|
<Error Condition="!Exists('..\..\packages\WixToolset.Core.InternalPackage.4.0.60\build\WixToolset.Core.InternalPackage.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.Core.InternalPackage.4.0.60\build\WixToolset.Core.InternalPackage.props'))" />
|
||||||
|
</Target>
|
||||||
|
<Import Project="..\..\packages\Nerdbank.GitVersioning.2.1.7\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.1.7\build\Nerdbank.GitVersioning.targets')" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
"version": "4.0",
|
||||||
|
"publicReleaseRefSpec": [
|
||||||
|
"^refs/heads/master$"
|
||||||
|
],
|
||||||
|
"cloudBuild": {
|
||||||
|
"buildNumber": {
|
||||||
|
"enabled": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Загрузка…
Ссылка в новой задаче