aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-01-12 16:49:42 -0600
committerSean Hall <r.sean.hall@gmail.com>2019-01-12 16:58:52 -0600
commit2a14c230453744ea896948ca0b4f6692f2962bee (patch)
tree08227b815bb5ce8e5140f902305d921917fca95d
parent9d5d059a2147aa0fe38f7103148c020b66455e83 (diff)
downloadwix-2a14c230453744ea896948ca0b4f6692f2962bee.tar.gz
wix-2a14c230453744ea896948ca0b4f6692f2962bee.tar.bz2
wix-2a14c230453744ea896948ca0b4f6692f2962bee.zip
Integrate into latest v4.
-rw-r--r--.editorconfig37
-rw-r--r--UI.wixext.sln75
-rw-r--r--appveyor.cmd13
-rw-r--r--appveyor.yml40
-rw-r--r--nuget.config16
-rw-r--r--src/Cpp.Build.props100
-rw-r--r--src/Directory.Build.props26
-rw-r--r--src/Directory.Build.targets48
-rw-r--r--src/FindLocalWix.props8
-rw-r--r--src/ca/CustomMsiErrors.h10
-rw-r--r--src/ca/packages.config5
-rw-r--r--src/ca/precomp.h1
-rw-r--r--src/ca/uica.vcxproj40
-rw-r--r--src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.en-us.wxl11
-rw-r--r--src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs22
-rw-r--r--src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/PackageComponents.wxs12
-rw-r--r--src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/example.txt1
-rw-r--r--src/test/WixToolsetTest.UI/UIExtensionFixture.cs32
-rw-r--r--src/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj38
-rw-r--r--src/wixext/UIDecompiler.cs2
-rw-r--r--src/wixext/UIExtensionData.cs36
-rw-r--r--src/wixext/UIExtensionFactory.cs16
-rw-r--r--src/wixext/WixToolset.UI.wixext.csproj29
-rw-r--r--src/wixext/WixToolset.UI.wixext.targets11
-rw-r--r--src/wixext/WixUIExtension.csproj31
-rw-r--r--src/wixlib/caSuffix.wxi28
-rw-r--r--src/wixlib/packages.config5
-rw-r--r--src/wixlib/ui.wixproj (renamed from src/wixlib/UIExtension.wixproj)35
-rw-r--r--version.json11
29 files changed, 653 insertions, 86 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..1d72e683
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,37 @@
1# Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2#
3# Do NOT modify this file. Update the canonical version in Home\repo-template\src\.editorconfig
4# then update all of the repos.
5
6root = true
7
8[*]
9charset = utf-8
10indent_style = space
11indent_size = 4
12trim_trailing_whitespace = true
13
14[*.{cs,vb}]
15dotnet_sort_system_directives_first = true
16
17[*.cs]
18csharp_indent_case_contents = true : error
19csharp_indent_switch_labels = true : error
20csharp_new_line_before_open_brace = all
21csharp_prefer_braces = true : error
22csharp_style_expression_bodied_methods = when_on_single_line : suggestion
23csharp_style_expression_bodied_constructors = when_on_single_line : suggestion
24csharp_style_expression_bodied_operators = when_on_single_line : suggestion
25csharp_style_expression_bodied_properties = when_on_single_line : suggestion
26csharp_style_expression_bodied_indexers = when_on_single_line : suggestion
27csharp_style_expression_bodied_accessors = when_on_single_line : suggestion
28csharp_style_var_elsewhere = true : suggestion
29csharp_style_var_for_built_in_types = true : suggestion
30csharp_style_var_when_type_is_apparent = true : suggestion
31dotnet_style_qualification_for_event = true : error
32dotnet_style_qualification_for_field = true : error
33dotnet_style_qualification_for_method = true : error
34dotnet_style_qualification_for_property = true : error
35
36[*.targets]
37indent_size = 2
diff --git a/UI.wixext.sln b/UI.wixext.sln
new file mode 100644
index 00000000..02e8c77b
--- /dev/null
+++ b/UI.wixext.sln
@@ -0,0 +1,75 @@
1
2Microsoft Visual Studio Solution File, Format Version 12.00
3# Visual Studio 15
4VisualStudioVersion = 15.0.27130.2003
5MinimumVisualStudioVersion = 15.0.26124.0
6Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "uica", "src\ca\uica.vcxproj", "{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}"
7EndProject
8Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "ui", "src\wixlib\ui.wixproj", "{2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}"
9EndProject
10Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolset.UI.wixext", "src\wixext\WixToolset.UI.wixext.csproj", "{33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}"
11EndProject
12Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "WixToolsetTest.UI", "src\test\WixToolsetTest.UI\WixToolsetTest.UI.csproj", "{A37CC793-F659-4C77-A01C-D183023B6880}"
13EndProject
14Global
15 GlobalSection(SolutionConfigurationPlatforms) = preSolution
16 Debug|Any CPU = Debug|Any CPU
17 Debug|x64 = Debug|x64
18 Debug|x86 = Debug|x86
19 Release|Any CPU = Release|Any CPU
20 Release|x64 = Release|x64
21 Release|x86 = Release|x86
22 EndGlobalSection
23 GlobalSection(ProjectConfigurationPlatforms) = postSolution
24 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|Any CPU.ActiveCfg = Debug|Win32
25 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|Any CPU.Build.0 = Debug|Win32
26 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x64.ActiveCfg = Debug|Win32
27 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x86.ActiveCfg = Debug|Win32
28 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Debug|x86.Build.0 = Debug|Win32
29 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|Any CPU.ActiveCfg = Release|Win32
30 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|Any CPU.Build.0 = Release|Win32
31 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x64.ActiveCfg = Release|Win32
32 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x86.ActiveCfg = Release|Win32
33 {F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}.Release|x86.Build.0 = Release|Win32
34 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Debug|Any CPU.ActiveCfg = Debug|x86
35 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Debug|Any CPU.Build.0 = Debug|x86
36 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Debug|x64.ActiveCfg = Debug|x86
37 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Debug|x86.ActiveCfg = Debug|x86
38 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Debug|x86.Build.0 = Debug|x86
39 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Release|Any CPU.ActiveCfg = Release|x86
40 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Release|Any CPU.Build.0 = Release|x86
41 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Release|x64.ActiveCfg = Release|x86
42 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Release|x86.ActiveCfg = Release|x86
43 {2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}.Release|x86.Build.0 = Release|x86
44 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
46 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|x64.ActiveCfg = Debug|Any CPU
47 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|x64.Build.0 = Debug|Any CPU
48 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|x86.ActiveCfg = Debug|Any CPU
49 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Debug|x86.Build.0 = Debug|Any CPU
50 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
51 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|Any CPU.Build.0 = Release|Any CPU
52 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|x64.ActiveCfg = Release|Any CPU
53 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|x64.Build.0 = Release|Any CPU
54 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|x86.ActiveCfg = Release|Any CPU
55 {33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}.Release|x86.Build.0 = Release|Any CPU
56 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
57 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|Any CPU.Build.0 = Debug|Any CPU
58 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|x64.ActiveCfg = Debug|Any CPU
59 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|x64.Build.0 = Debug|Any CPU
60 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|x86.ActiveCfg = Debug|Any CPU
61 {A37CC793-F659-4C77-A01C-D183023B6880}.Debug|x86.Build.0 = Debug|Any CPU
62 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|Any CPU.ActiveCfg = Release|Any CPU
63 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|Any CPU.Build.0 = Release|Any CPU
64 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|x64.ActiveCfg = Release|Any CPU
65 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|x64.Build.0 = Release|Any CPU
66 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|x86.ActiveCfg = Release|Any CPU
67 {A37CC793-F659-4C77-A01C-D183023B6880}.Release|x86.Build.0 = Release|Any CPU
68 EndGlobalSection
69 GlobalSection(SolutionProperties) = preSolution
70 HideSolutionNode = FALSE
71 EndGlobalSection
72 GlobalSection(ExtensibilityGlobals) = postSolution
73 SolutionGuid = {1EB72678-984C-4F8F-9C3C-8D0FA2450E86}
74 EndGlobalSection
75EndGlobal
diff --git a/appveyor.cmd b/appveyor.cmd
new file mode 100644
index 00000000..fd2a6e44
--- /dev/null
+++ b/appveyor.cmd
@@ -0,0 +1,13 @@
1@setlocal
2@pushd %~dp0
3
4nuget restore
5
6msbuild -p:Configuration=Release -t:Restore
7
8msbuild -p:Configuration=Release src\test\WixToolsetTest.UI\WixToolsetTest.UI.csproj
9
10msbuild -p:Configuration=Release -t:Pack src\wixext\WixToolset.UI.wixext.csproj
11
12@popd
13@endlocal \ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 00000000..c1df03cc
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,40 @@
1# Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2#
3# Do NOT modify this file. Update the canonical version in Home\repo-template\src\appveyor.yml
4# then update all of the repos.
5
6branches:
7 only:
8 - master
9 - develop
10
11image: Visual Studio 2017
12
13version: 0.0.0.{build}
14configuration: Release
15
16environment:
17 DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
18 DOTNET_CLI_TELEMETRY_OPTOUT: 1
19 NUGET_XMLDOC_MODE: skip
20
21build_script:
22 - appveyor.cmd
23
24pull_requests:
25 do_not_increment_build_number: true
26
27nuget:
28 disable_publish_on_pr: true
29
30skip_branch_with_pr: true
31skip_tags: true
32
33artifacts:
34- path: build\Release\**\*.nupkg
35 name: nuget
36
37notifications:
38- provider: Slack
39 incoming_webhook:
40 secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA=
diff --git a/nuget.config b/nuget.config
new file mode 100644
index 00000000..aaee3228
--- /dev/null
+++ b/nuget.config
@@ -0,0 +1,16 @@
1<?xml version="1.0" encoding="utf-8"?>
2<configuration>
3 <packageSources>
4 <clear />
5 <add key="wixtoolset-data" value="https://ci.appveyor.com/nuget/wixtoolset-data" />
6 <add key="wixtoolset-extensibility" value="https://ci.appveyor.com/nuget/wixtoolset-extensibility" />
7 <add key="wixtoolset-core" value="https://ci.appveyor.com/nuget/wixtoolset-core" />
8 <add key="wixtoolset-core-native" value="https://ci.appveyor.com/nuget/wixtoolset-core-native" />
9 <add key="wixtoolset-dtf" value="https://ci.appveyor.com/nuget/wixtoolset-dtf" />
10 <add key="wixtoolset-dutil" value="https://ci.appveyor.com/nuget/wixtoolset-dutil" />
11 <add key="wixtoolset-wcautil" value="https://ci.appveyor.com/nuget/wixtoolset-wcautil" />
12 <add key="wixtoolset-tools" value="https://ci.appveyor.com/nuget/wixtoolset-tools" />
13 <add key="wixbuildtools" value="https://ci.appveyor.com/nuget/wixbuildtools" />
14 <add key="api.nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
15 </packageSources>
16</configuration> \ No newline at end of file
diff --git a/src/Cpp.Build.props b/src/Cpp.Build.props
new file mode 100644
index 00000000..296b36ca
--- /dev/null
+++ b/src/Cpp.Build.props
@@ -0,0 +1,100 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project>
5 <PropertyGroup>
6 <Platform Condition=" '$(Platform)' == '' OR '$(Platform)' == 'AnyCPU' ">Win32</Platform>
7 <IntDir>$(BaseIntermediateOutputPath)$(Configuration)\$(Platform)\</IntDir>
8 <OutDir>$(OutputPath)$(Platform)\</OutDir>
9 </PropertyGroup>
10
11 <ItemDefinitionGroup>
12 <ClCompile>
13 <DisableSpecificWarnings>$(DisableSpecificCompilerWarnings)</DisableSpecificWarnings>
14 <WarningLevel>Level4</WarningLevel>
15 <AdditionalIncludeDirectories>$(ProjectDir)inc;$(MSBuildProjectDirectory);$(IntDir);$(SqlCESdkIncludePath);$(ProjectAdditionalIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
16 <PreprocessorDefinitions>WIN32;_WINDOWS;_WIN32_MSI=500;_WIN32_WINNT=0x0501;$(ArmPreprocessorDefinitions);$(UnicodePreprocessorDefinitions);_CRT_STDIO_LEGACY_WIDE_SPECIFIERS;_WINSOCK_DEPRECATED_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
17 <PrecompiledHeader>Use</PrecompiledHeader>
18 <PrecompiledHeaderFile>precomp.h</PrecompiledHeaderFile>
19 <CallingConvention>StdCall</CallingConvention>
20 <TreatWarningAsError>true</TreatWarningAsError>
21 <ExceptionHandling>false</ExceptionHandling>
22 <AdditionalOptions>-YlprecompDefine</AdditionalOptions>
23 <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/Zc:threadSafeInit- %(AdditionalOptions)</AdditionalOptions>
24 <MultiProcessorCompilation Condition=" $(NUMBER_OF_PROCESSORS) &gt; 4 ">true</MultiProcessorCompilation>
25 </ClCompile>
26 <ResourceCompile>
27 <PreprocessorDefinitions>$(ArmPreprocessorDefinitions);%(PreprocessorDefinitions)</PreprocessorDefinitions>
28 <AdditionalIncludeDirectories>$(ProjectAdditionalResourceIncludeDirectories);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
29 </ResourceCompile>
30 <Lib>
31 <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ProjectAdditionalLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
32 </Lib>
33 <Link>
34 <SubSystem>$(ProjectSubSystem)</SubSystem>
35 <ModuleDefinitionFile>$(ProjectModuleDefinitionFile)</ModuleDefinitionFile>
36 <NoEntryPoint>$(ResourceOnlyDll)</NoEntryPoint>
37 <GenerateDebugInformation>true</GenerateDebugInformation>
38 <AdditionalDependencies>$(ProjectAdditionalLinkLibraries);advapi32.lib;comdlg32.lib;user32.lib;oleaut32.lib;gdi32.lib;shell32.lib;ole32.lib;version.lib;%(AdditionalDependencies)</AdditionalDependencies>
39 <AdditionalLibraryDirectories>$(OutDir);$(AdditionalMultiTargetLibraryPath);$(ArmLibraryDirectories);$(ProjectAdditionalLinkLibraryDirectories);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
40 <AdditionalOptions Condition=" $(PlatformToolset.StartsWith('v14')) ">/IGNORE:4099 %(AdditionalOptions)</AdditionalOptions>
41 </Link>
42 </ItemDefinitionGroup>
43
44 <ItemDefinitionGroup Condition=" '$(Platform)'=='Win32' and '$(PlatformToolset)'!='v100'">
45 <ClCompile>
46 <EnableEnhancedInstructionSet>NoExtensions</EnableEnhancedInstructionSet>
47 </ClCompile>
48 </ItemDefinitionGroup>
49 <ItemDefinitionGroup Condition=" '$(Platform)'=='arm' ">
50 <ClCompile>
51 <CallingConvention>CDecl</CallingConvention>
52 </ClCompile>
53 </ItemDefinitionGroup>
54 <ItemDefinitionGroup Condition=" '$(ConfigurationType)'=='StaticLibrary' ">
55 <ClCompile>
56 <DebugInformationFormat>OldStyle</DebugInformationFormat>
57 <OmitDefaultLibName>true</OmitDefaultLibName>
58 <IgnoreAllDefaultLibraries>true</IgnoreAllDefaultLibraries>
59 </ClCompile>
60 </ItemDefinitionGroup>
61 <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' ">
62 <ClCompile>
63 <Optimization>Disabled</Optimization>
64 <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
65 <PreprocessorDefinitions>_DEBUG;DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
66 <RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
67 </ClCompile>
68 </ItemDefinitionGroup>
69 <ItemDefinitionGroup Condition=" '$(Configuration)'=='Debug' and '$(CLRSupport)'=='true' ">
70 <ClCompile>
71 <BasicRuntimeChecks></BasicRuntimeChecks>
72 <RuntimeLibrary>MultiThreadedDebugDll</RuntimeLibrary>
73 </ClCompile>
74 </ItemDefinitionGroup>
75 <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' ">
76 <ClCompile>
77 <Optimization>MinSpace</Optimization>
78 <PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
79 <FunctionLevelLinking>true</FunctionLevelLinking>
80 <IntrinsicFunctions>true</IntrinsicFunctions>
81 <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
82 </ClCompile>
83 <Link>
84 <EnableCOMDATFolding>true</EnableCOMDATFolding>
85 <OptimizeReferences>true</OptimizeReferences>
86 </Link>
87 </ItemDefinitionGroup>
88 <ItemDefinitionGroup Condition=" '$(Configuration)'=='Release' and '$(CLRSupport)'=='true' ">
89 <ClCompile>
90 <BasicRuntimeChecks></BasicRuntimeChecks>
91 <RuntimeLibrary>MultiThreadedDll</RuntimeLibrary>
92 </ClCompile>
93 </ItemDefinitionGroup>
94 <ItemDefinitionGroup Condition=" '$(CLRSupport)'=='true' ">
95 <Link>
96 <KeyFile>$(LinkKeyFile)</KeyFile>
97 <DelaySign>$(LinkDelaySign)</DelaySign>
98 </Link>
99 </ItemDefinitionGroup>
100</Project>
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
new file mode 100644
index 00000000..e853e22d
--- /dev/null
+++ b/src/Directory.Build.props
@@ -0,0 +1,26 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3<!--
4 Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.props
5 then update all of the repos.
6-->
7<Project>
8 <PropertyGroup>
9 <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
10 <EnableSourceLink Condition=" '$(NCrunch)' == '1' ">false</EnableSourceLink>
11
12 <ProjectName Condition=" '$(ProjectName)' == '' ">$(MSBuildProjectName)</ProjectName>
13 <BaseOutputPath>$([System.IO.Path]::GetFullPath($(MSBuildThisFileDirectory)..\build\))</BaseOutputPath>
14 <BaseIntermediateOutputPath>$(BaseOutputPath)obj\$(ProjectName)\</BaseIntermediateOutputPath>
15 <OutputPath>$(BaseOutputPath)$(Configuration)\</OutputPath>
16
17 <Authors>WiX Toolset Team</Authors>
18 <Company>WiX Toolset</Company>
19 <Copyright>Copyright (c) .NET Foundation and contributors. All rights reserved.</Copyright>
20 <PackageLicenseExpression>MS-RL</PackageLicenseExpression>
21 <Product>WiX Toolset</Product>
22 </PropertyGroup>
23
24 <Import Project="Cpp.Build.props" Condition=" '$(MSBuildProjectExtension)'=='.vcxproj' " />
25 <Import Project="Custom.Build.props" Condition=" Exists('Custom.Build.props') " />
26</Project>
diff --git a/src/Directory.Build.targets b/src/Directory.Build.targets
new file mode 100644
index 00000000..dac7452a
--- /dev/null
+++ b/src/Directory.Build.targets
@@ -0,0 +1,48 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3<!--
4 Do NOT modify this file. Update the canonical version in Home\repo-template\src\Directory.Build.targets
5 then update all of the repos.
6-->
7<!--
8 Replace PackageReferences with ProjectReferences when the projects can be found in .sln.
9 See the original here: https://github.com/dotnet/sdk/issues/1151#issuecomment-385133284
10-->
11<Project>
12 <PropertyGroup>
13 <ReplacePackageReferences>true</ReplacePackageReferences>
14 <TheSolutionPath Condition=" '$(NCrunch)'=='' ">$(SolutionPath)</TheSolutionPath>
15 <TheSolutionPath Condition=" '$(NCrunch)'=='1' ">$(NCrunchOriginalSolutionPath)</TheSolutionPath>
16 </PropertyGroup>
17
18 <Choose>
19 <When Condition="$(ReplacePackageReferences) AND '$(TheSolutionPath)' != '' AND '$(TheSolutionPath)' != '*undefined*' AND Exists('$(TheSolutionPath)')">
20
21 <PropertyGroup>
22 <SolutionFileContent>$([System.IO.File]::ReadAllText($(TheSolutionPath)))</SolutionFileContent>
23 <SmartSolutionDir>$([System.IO.Path]::GetDirectoryName( $(TheSolutionPath) ))</SmartSolutionDir>
24 <RegexPattern>(?&lt;="[PackageName]", ")(.*)(?=", ")</RegexPattern>
25 </PropertyGroup>
26
27 <ItemGroup>
28 <!-- Keep the identity of the PackageReference -->
29 <SmartPackageReference Include="@(PackageReference)">
30 <PackageName>%(Identity)</PackageName>
31 <InSolution>$(SolutionFileContent.Contains('\%(Identity).csproj'))</InSolution>
32 </SmartPackageReference>
33
34 <!-- Filter them by mapping them to another ItemGroup using the WithMetadataValue item function -->
35 <PackageInSolution Include="@(SmartPackageReference->WithMetadataValue('InSolution', True))">
36 <Pattern>$(RegexPattern.Replace('[PackageName]','%(PackageName)') )</Pattern>
37 <SmartPath>$([System.Text.RegularExpressions.Regex]::Match('$(SolutionFileContent)', '%(Pattern)'))</SmartPath>
38 </PackageInSolution>
39
40 <ProjectReference Include="@(PackageInSolution->'$(SmartSolutionDir)\%(SmartPath)' )"/>
41
42 <!-- Remove the package references that are now referenced as projects -->
43 <PackageReference Remove="@(PackageInSolution->'%(PackageName)' )"/>
44 </ItemGroup>
45
46 </When>
47 </Choose>
48</Project>
diff --git a/src/FindLocalWix.props b/src/FindLocalWix.props
new file mode 100644
index 00000000..a784e352
--- /dev/null
+++ b/src/FindLocalWix.props
@@ -0,0 +1,8 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <PropertyGroup>
6 <WixTargetsPath Condition=" '$(Configuration)' == 'Debug' And Exists('$(MSBuildThisFileDirectory)..\..\Tools\README.md') ">$(MSBuildThisFileDirectory)..\..\Tools\build\Debug\net461\wix.targets</WixTargetsPath>
7 </PropertyGroup>
8</Project>
diff --git a/src/ca/CustomMsiErrors.h b/src/ca/CustomMsiErrors.h
new file mode 100644
index 00000000..b568d01c
--- /dev/null
+++ b/src/ca/CustomMsiErrors.h
@@ -0,0 +1,10 @@
1#pragma once
2// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
3
4#define msierrSQLFailedCreateDatabase 26201
5#define msierrSQLFailedDropDatabase 26202
6#define msierrSQLFailedConnectDatabase 26203
7#define msierrSQLFailedExecString 26204
8#define msierrSQLDatabaseAlreadyExists 26205
9
10//Last available is 26250 \ No newline at end of file
diff --git a/src/ca/packages.config b/src/ca/packages.config
new file mode 100644
index 00000000..265886d9
--- /dev/null
+++ b/src/ca/packages.config
@@ -0,0 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?>
2<packages>
3 <package id="WixToolset.DUtil" version="4.0.13" targetFramework="native" />
4 <package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" />
5</packages> \ No newline at end of file
diff --git a/src/ca/precomp.h b/src/ca/precomp.h
index dcdf2653..e95240c6 100644
--- a/src/ca/precomp.h
+++ b/src/ca/precomp.h
@@ -7,7 +7,6 @@
7#include <richedit.h> 7#include <richedit.h>
8#include <shlwapi.h> 8#include <shlwapi.h>
9 9
10#include "wixstrsafe.h"
11#include "wcautil.h" 10#include "wcautil.h"
12#include "aclutil.h" 11#include "aclutil.h"
13#include "fileutil.h" 12#include "fileutil.h"
diff --git a/src/ca/uica.vcxproj b/src/ca/uica.vcxproj
index 92e20e1a..f6e0ef2a 100644
--- a/src/ca/uica.vcxproj
+++ b/src/ca/uica.vcxproj
@@ -1,8 +1,10 @@
1<?xml version="1.0" encoding="utf-8"?> 1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3
4<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <Import Project="..\..\packages\WixToolset.DUtil.4.0.13\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.13\build\WixToolset.DUtil.props')" />
6 <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" />
4 7
5<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
6 <ItemGroup Label="ProjectConfigurations"> 8 <ItemGroup Label="ProjectConfigurations">
7 <ProjectConfiguration Include="Debug|Win32"> 9 <ProjectConfiguration Include="Debug|Win32">
8 <Configuration>Debug</Configuration> 10 <Configuration>Debug</Configuration>
@@ -13,34 +15,28 @@
13 <Platform>Win32</Platform> 15 <Platform>Win32</Platform>
14 </ProjectConfiguration> 16 </ProjectConfiguration>
15 </ItemGroup> 17 </ItemGroup>
16 <ItemGroup Label="ProjectConfigurations">
17 <ProjectConfiguration Include="Debug|ARM">
18 <Configuration>Debug</Configuration>
19 <Platform>ARM</Platform>
20 </ProjectConfiguration>
21 <ProjectConfiguration Include="Release|ARM">
22 <Configuration>Release</Configuration>
23 <Platform>ARM</Platform>
24 </ProjectConfiguration>
25 </ItemGroup>
26 18
27 <PropertyGroup Label="Globals"> 19 <PropertyGroup Label="Globals">
28 <ProjectGuid>{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}</ProjectGuid> 20 <ProjectGuid>{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}</ProjectGuid>
29 <ConfigurationType>DynamicLibrary</ConfigurationType> 21 <ConfigurationType>DynamicLibrary</ConfigurationType>
30 <CharacterSet>MultiByte</CharacterSet> 22 <CharacterSet>MultiByte</CharacterSet>
31 <TargetName>uica</TargetName> 23 <TargetName>uica</TargetName>
24 <PlatformToolset>v141</PlatformToolset>
32 <ProjectModuleDefinitionFile>uica.def</ProjectModuleDefinitionFile> 25 <ProjectModuleDefinitionFile>uica.def</ProjectModuleDefinitionFile>
26 <Description>WiX Toolset UI CustomAction</Description>
33 </PropertyGroup> 27 </PropertyGroup>
34 28
35 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.props" /> 29 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
30 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
36 31
37 <PropertyGroup> 32 <PropertyGroup>
38 <ProjectAdditionalIncludeDirectories>$(WixRoot)src\libs\dutil\inc;$(WixRoot)src\libs\wcautil</ProjectAdditionalIncludeDirectories> 33 <ProjectAdditionalLinkLibraries>msi.lib;shlwapi.lib</ProjectAdditionalLinkLibraries>
39 <ProjectAdditionalLinkLibraries>msi.lib;shlwapi.lib;dutil.lib;wcautil.lib</ProjectAdditionalLinkLibraries>
40 </PropertyGroup> 34 </PropertyGroup>
41 35
42 <ItemGroup> 36 <ItemGroup>
43 <ClCompile Include="dllmain.cpp" /> 37 <ClCompile Include="dllmain.cpp">
38 <PrecompiledHeader>Create</PrecompiledHeader>
39 </ClCompile>
44 <ClCompile Include="DriveCheck.cpp" /> 40 <ClCompile Include="DriveCheck.cpp" />
45 <ClCompile Include="PrintEula.cpp" /> 41 <ClCompile Include="PrintEula.cpp" />
46 </ItemGroup> 42 </ItemGroup>
@@ -49,11 +45,17 @@
49 <ClInclude Include="precomp.h" /> 45 <ClInclude Include="precomp.h" />
50 </ItemGroup> 46 </ItemGroup>
51 <ItemGroup> 47 <ItemGroup>
48 <None Include="packages.config" />
52 <None Include="uica.def" /> 49 <None Include="uica.def" />
53 </ItemGroup> 50 </ItemGroup>
54 <ItemGroup>
55 <ResourceCompile Include="uica.rc" />
56 </ItemGroup>
57 51
58 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" /> 52 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
53
54 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
55 <PropertyGroup>
56 <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>
57 </PropertyGroup>
58 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.13\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.13\build\WixToolset.DUtil.props'))" />
59 <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'))" />
60 </Target>
59</Project> 61</Project>
diff --git a/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.en-us.wxl b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.en-us.wxl
new file mode 100644
index 00000000..38c12ac1
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.en-us.wxl
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8"?>
2
3<!--
4This file contains the declaration of all the localizable strings.
5-->
6<WixLocalization xmlns="http://wixtoolset.org/schemas/v4/wxl" Culture="en-US">
7
8 <String Id="DowngradeError">A newer version of [ProductName] is already installed.</String>
9 <String Id="FeatureTitle">MsiPackage</String>
10
11</WixLocalization>
diff --git a/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs
new file mode 100644
index 00000000..68ff98fd
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/Package.wxs
@@ -0,0 +1,22 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Product Id="*" Name="MsiPackage" Language="1033" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="047730a5-30fe-4a62-a520-da9381b8226a">
4 <Package InstallerVersion="200" Compressed="no" InstallScope="perMachine" />
5
6 <MajorUpgrade DowngradeErrorMessage="!(loc.DowngradeError)" />
7 <MediaTemplate />
8
9 <Feature Id="ProductFeature" Title="!(loc.FeatureTitle)">
10 <ComponentGroupRef Id="ProductComponents" />
11 </Feature>
12
13 </Product>
14
15 <Fragment>
16 <Directory Id="TARGETDIR" Name="SourceDir">
17 <Directory Id="ProgramFilesFolder">
18 <Directory Id="INSTALLFOLDER" Name="MsiPackage" />
19 </Directory>
20 </Directory>
21 </Fragment>
22</Wix>
diff --git a/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/PackageComponents.wxs b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/PackageComponents.wxs
new file mode 100644
index 00000000..c50785a1
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/PackageComponents.wxs
@@ -0,0 +1,12 @@
1<?xml version="1.0" encoding="utf-8"?>
2<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
3 <Fragment>
4 <UIRef Id="WixUI_Minimal" />
5
6 <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
7 <Component>
8 <File Source="example.txt" />
9 </Component>
10 </ComponentGroup>
11 </Fragment>
12</Wix>
diff --git a/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/example.txt b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/example.txt
new file mode 100644
index 00000000..1b4ffe8a
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/TestData/WixUI_Minimal/example.txt
@@ -0,0 +1 @@
This is example.txt. \ No newline at end of file
diff --git a/src/test/WixToolsetTest.UI/UIExtensionFixture.cs b/src/test/WixToolsetTest.UI/UIExtensionFixture.cs
new file mode 100644
index 00000000..43694c49
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/UIExtensionFixture.cs
@@ -0,0 +1,32 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolsetTest.UI
4{
5 using System.Linq;
6 using WixBuildTools.TestSupport;
7 using WixToolset.Core.TestPackage;
8 using WixToolset.UI;
9 using Xunit;
10
11 public class UIExtensionFixture
12 {
13 [Fact(Skip = "Currently fails")]
14 public void CanBuildUsingWixUIMinimal()
15 {
16 var folder = TestData.Get(@"TestData\WixUI_Minimal");
17 var build = new Builder(folder, typeof(UIExtensionFactory), new[] { folder });
18
19 var results = build.BuildAndQuery(Build, "Property");
20 Assert.Equal(new[]
21 {
22 "Property:",
23 }, results.OrderBy(s => s).ToArray());
24 }
25
26 private static void Build(string[] args)
27 {
28 var result = WixRunner.Execute(args)
29 .AssertSuccess();
30 }
31 }
32}
diff --git a/src/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj b/src/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
new file mode 100644
index 00000000..4a3ba5e7
--- /dev/null
+++ b/src/test/WixToolsetTest.UI/WixToolsetTest.UI.csproj
@@ -0,0 +1,38 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup>
6 <TargetFramework>netcoreapp2.1</TargetFramework>
7 <IsPackable>false</IsPackable>
8 </PropertyGroup>
9
10 <PropertyGroup>
11 <NoWarn>NU1701</NoWarn>
12 </PropertyGroup>
13
14 <ItemGroup>
15 <Content Include="TestData\WixUI_Minimal\example.txt" CopyToOutputDirectory="PreserveNewest" />
16 <Content Include="TestData\WixUI_Minimal\Package.en-us.wxl" CopyToOutputDirectory="PreserveNewest" />
17 <Content Include="TestData\WixUI_Minimal\Package.wxs" CopyToOutputDirectory="PreserveNewest" />
18 <Content Include="TestData\WixUI_Minimal\PackageComponents.wxs" CopyToOutputDirectory="PreserveNewest" />
19 </ItemGroup>
20
21 <ItemGroup>
22 <ProjectReference Include="..\..\wixext\WixToolset.UI.wixext.csproj" />
23 </ItemGroup>
24
25 <ItemGroup>
26 <PackageReference Include="WixToolset.Core.TestPackage" Version="4.0.*" PrivateAssets="all" />
27 </ItemGroup>
28
29 <ItemGroup>
30 <PackageReference Include="WixBuildTools.TestSupport" Version="4.0.*" />
31 </ItemGroup>
32
33 <ItemGroup>
34 <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
35 <PackageReference Include="xunit" Version="2.4.0" />
36 <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
37 </ItemGroup>
38</Project>
diff --git a/src/wixext/UIDecompiler.cs b/src/wixext/UIDecompiler.cs
index 4bdd48fc..2493e7c7 100644
--- a/src/wixext/UIDecompiler.cs
+++ b/src/wixext/UIDecompiler.cs
@@ -2,6 +2,7 @@
2 2
3namespace WixToolset.Extensions 3namespace WixToolset.Extensions
4{ 4{
5#if TODO_CONSIDER_DECOMPILER
5 using System; 6 using System;
6 using System.Collections; 7 using System.Collections;
7 using System.Diagnostics; 8 using System.Diagnostics;
@@ -54,4 +55,5 @@ namespace WixToolset.Extensions
54 } 55 }
55 } 56 }
56 } 57 }
58#endif
57} 59}
diff --git a/src/wixext/UIExtensionData.cs b/src/wixext/UIExtensionData.cs
index a833b82b..327d20c8 100644
--- a/src/wixext/UIExtensionData.cs
+++ b/src/wixext/UIExtensionData.cs
@@ -1,43 +1,23 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2 2
3namespace WixToolset.Extensions 3namespace WixToolset.UI
4{ 4{
5 using System;
6 using System.Reflection;
7 using WixToolset.Data; 5 using WixToolset.Data;
8 using WixToolset.Extensibility; 6 using WixToolset.Extensibility;
9 7
10 /// <summary> 8 public sealed class UIExtensionData : BaseExtensionData
11 /// The WiX Toolset UI Extension.
12 /// </summary>
13 public sealed class UIExtensionData : ExtensionData
14 { 9 {
15 /// <summary> 10 public override string DefaultCulture => "en-US";
16 /// Gets the default culture.
17 /// </summary>
18 /// <value>The default culture.</value>
19 public override string DefaultCulture
20 {
21 get { return "en-us"; }
22 }
23 11
24 /// <summary> 12 public override bool TryGetTupleDefinitionByName(string name, out IntermediateTupleDefinition tupleDefinition)
25 /// Gets the library associated with this extension.
26 /// </summary>
27 /// <param name="tableDefinitions">The table definitions to use while loading the library.</param>
28 /// <returns>The loaded library.</returns>
29 public override Library GetLibrary(TableDefinitionCollection tableDefinitions)
30 { 13 {
31 return UIExtensionData.GetExtensionLibrary(tableDefinitions); 14 tupleDefinition = null;
15 return tupleDefinition != null;
32 } 16 }
33 17
34 /// <summary> 18 public override Intermediate GetLibrary(ITupleDefinitionCreator tupleDefinitions)
35 /// Internal mechanism to access the extension's library.
36 /// </summary>
37 /// <returns>Extension's library.</returns>
38 internal static Library GetExtensionLibrary(TableDefinitionCollection tableDefinitions)
39 { 19 {
40 return ExtensionData.LoadLibraryHelper(Assembly.GetExecutingAssembly(), "WixToolset.Extensions.Data.ui.wixlib", tableDefinitions); 20 return Intermediate.Load(typeof(UIExtensionData).Assembly, "WixToolset.UI.ui.wixlib", tupleDefinitions);
41 } 21 }
42 } 22 }
43} 23}
diff --git a/src/wixext/UIExtensionFactory.cs b/src/wixext/UIExtensionFactory.cs
new file mode 100644
index 00000000..1c9caacc
--- /dev/null
+++ b/src/wixext/UIExtensionFactory.cs
@@ -0,0 +1,16 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.UI
4{
5 using System;
6 using System.Collections.Generic;
7 using WixToolset.Extensibility;
8
9 public class UIExtensionFactory : BaseExtensionFactory
10 {
11 protected override IEnumerable<Type> ExtensionTypes => new[]
12 {
13 typeof(UIExtensionData),
14 };
15 }
16}
diff --git a/src/wixext/WixToolset.UI.wixext.csproj b/src/wixext/WixToolset.UI.wixext.csproj
new file mode 100644
index 00000000..f8b47f63
--- /dev/null
+++ b/src/wixext/WixToolset.UI.wixext.csproj
@@ -0,0 +1,29 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project Sdk="Microsoft.NET.Sdk">
5 <PropertyGroup>
6 <TargetFramework>netstandard2.0</TargetFramework>
7 <RootNamespace>WixToolset.UI</RootNamespace>
8 <Description>WiX Toolset UI Extension</Description>
9 <Title>WiX Toolset UI Extension</Title>
10 <IsTool>true</IsTool>
11 <ContentTargetFolders>build</ContentTargetFolders>
12 </PropertyGroup>
13 <ItemGroup>
14 <Content Include="$(MSBuildThisFileName).targets" />
15 <EmbeddedResource Include="$(OutputPath)..\ui.wixlib" />
16 </ItemGroup>
17 <ItemGroup>
18 <PackageReference Include="WixToolset.Data" Version="4.0.*" PrivateAssets="all" />
19 <PackageReference Include="WixToolset.Extensibility" Version="4.0.*" PrivateAssets="all" />
20 </ItemGroup>
21
22 <ItemGroup>
23 <ProjectReference Include="..\wixlib\ui.wixproj" ReferenceOutputAssembly="false" Condition=" '$(NCrunch)'=='' " />
24 </ItemGroup>
25
26 <ItemGroup>
27 <PackageReference Include="Nerdbank.GitVersioning" Version="2.1.65" PrivateAssets="All" />
28 </ItemGroup>
29</Project>
diff --git a/src/wixext/WixToolset.UI.wixext.targets b/src/wixext/WixToolset.UI.wixext.targets
new file mode 100644
index 00000000..b07a0886
--- /dev/null
+++ b/src/wixext/WixToolset.UI.wixext.targets
@@ -0,0 +1,11 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
5 <PropertyGroup>
6 <WixToolsetUIWixextPath Condition=" '$(WixToolsetUIWixextPath)' == '' ">$(MSBuildThisFileDirectory)..\tools\WixToolset.UI.wixext.dll</WixToolsetUIWixextPath>
7 </PropertyGroup>
8 <ItemGroup>
9 <WixExtension Include="$(WixToolsetUIWixextPath)" />
10 </ItemGroup>
11</Project>
diff --git a/src/wixext/WixUIExtension.csproj b/src/wixext/WixUIExtension.csproj
deleted file mode 100644
index ba1b5c58..00000000
--- a/src/wixext/WixUIExtension.csproj
+++ /dev/null
@@ -1,31 +0,0 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4
5<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
6 <PropertyGroup>
7 <ProjectGuid>{33F6ABF5-FA13-4B73-99FA-F9BBA894DD9A}</ProjectGuid>
8 <AssemblyName>WixUIExtension</AssemblyName>
9 <OutputType>Library</OutputType>
10 <RootNamespace>WixToolset.Extensions</RootNamespace>
11 </PropertyGroup>
12 <ItemGroup>
13 <Compile Include="AssemblyInfo.cs" />
14 <Compile Include="UIDecompiler.cs" />
15 <Compile Include="UIExtensionData.cs" />
16 <EmbeddedResource Include="$(OutputPath)ui.wixlib">
17 <Link>Data\ui.wixlib</Link>
18 </EmbeddedResource>
19 </ItemGroup>
20 <ItemGroup>
21 <Reference Include="System" />
22 <Reference Include="System.Xml" />
23 <ProjectReference Include="..\..\..\libs\WixToolset.Data\WixToolset.Data.csproj" />
24 <ProjectReference Include="..\..\..\libs\WixToolset.Extensibility\WixToolset.Extensibility.csproj" />
25 <ProjectReference Include="..\..\..\tools\wix\Wix.csproj" />
26 <ProjectReference Include="..\wixlib\UIExtension.wixproj">
27 <ReferenceOutputAssembly>false</ReferenceOutputAssembly>
28 </ProjectReference>
29 </ItemGroup>
30 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" />
31</Project>
diff --git a/src/wixlib/caSuffix.wxi b/src/wixlib/caSuffix.wxi
new file mode 100644
index 00000000..a56a2393
--- /dev/null
+++ b/src/wixlib/caSuffix.wxi
@@ -0,0 +1,28 @@
1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3
4<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
5 <?ifndef platform ?>
6 <?error Required value "platform" not defined in include caSuffix.wxi ?>
7 <?endif ?>
8
9 <?ifdef Suffix ?>
10 <?undef Suffix ?>
11 <?undef DeferredSuffix ?>
12 <?endif ?>
13
14 <?if $(var.platform)="x86" ?>
15 <?define Suffix="" ?>
16 <?define DeferredSuffix="" ?>
17 <?endif ?>
18
19 <?if $(var.platform)="x64" ?>
20 <?define Suffix="_x64" ?>
21 <?define DeferredSuffix="_64" ?>
22 <?endif ?>
23
24 <?if $(var.platform)="arm" ?>
25 <?define Suffix="_ARM" ?>
26 <?define DeferredSuffix="_ARM" ?>
27 <?endif ?>
28</Include>
diff --git a/src/wixlib/packages.config b/src/wixlib/packages.config
new file mode 100644
index 00000000..7964daed
--- /dev/null
+++ b/src/wixlib/packages.config
@@ -0,0 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?>
2<packages>
3 <package id="Nerdbank.GitVersioning" version="2.1.65" developmentDependency="true" targetFramework="net40" />
4 <package id="WixToolset.MSBuild" version="4.0.0-build-0035" developmentDependency="true" targetFramework="net40" />
5</packages> \ No newline at end of file
diff --git a/src/wixlib/UIExtension.wixproj b/src/wixlib/ui.wixproj
index 213205a2..37ad94d0 100644
--- a/src/wixlib/UIExtension.wixproj
+++ b/src/wixlib/ui.wixproj
@@ -1,16 +1,14 @@
1<?xml version="1.0" encoding="utf-8" ?> 1<?xml version="1.0" encoding="utf-8" ?>
2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. --> 2<!-- Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. -->
3 3<Project DefaultTargets="Build" InitialTargets="EnsureWixToolsetInstalled" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="15.0">
4 4 <Import Project="..\..\packages\WixToolset.MSBuild.4.0.0-build-0035\build\WixToolset.MSBuild.props" Condition="Exists('..\..\packages\WixToolset.MSBuild.4.0.0-build-0035\build\WixToolset.MSBuild.props')" />
5<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> 5 <Import Project="..\FindLocalWix.props" />
6 <PropertyGroup> 6 <PropertyGroup>
7 <ProjectGuid>{2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}</ProjectGuid> 7 <ProjectGuid>{2D4FF07B-26F8-4BEF-B41C-E4383F86DC32}</ProjectGuid>
8 <OutputName>ui</OutputName> 8 <OutputName>ui</OutputName>
9 <OutputType>Library</OutputType> 9 <OutputType>Library</OutputType>
10 <BindFiles>true</BindFiles> 10 <BindFiles>true</BindFiles>
11 <Pedantic>true</Pedantic> 11 <Pedantic>true</Pedantic>
12 <!-- Suppress ICE45 until we get a new darice.cub drop that properly supports the ElevationShield control attribute bit -->
13 <SuppressIces>ICE45</SuppressIces>
14 <Cultures>en-us</Cultures> 12 <Cultures>en-us</Cultures>
15 </PropertyGroup> 13 </PropertyGroup>
16 14
@@ -63,7 +61,12 @@
63 <Compile Include="AdvancedWelcomeEulaDlg.wxs" /> 61 <Compile Include="AdvancedWelcomeEulaDlg.wxs" />
64 <Compile Include="FeaturesDlg.wxs" /> 62 <Compile Include="FeaturesDlg.wxs" />
65 <Compile Include="InstallScopeDlg.wxs" /> 63 <Compile Include="InstallScopeDlg.wxs" />
64 <!-- TODO: Reenable when able to compile
66 <Compile Include="WixUI_Advanced.wxs" /> 65 <Compile Include="WixUI_Advanced.wxs" />
66 -->
67 </ItemGroup>
68
69 <ItemGroup>
67 <EmbeddedResource Include="WixUI_ar-SA.wxl" /> 70 <EmbeddedResource Include="WixUI_ar-SA.wxl" />
68 <EmbeddedResource Include="WixUI_bg-BG.wxl" /> 71 <EmbeddedResource Include="WixUI_bg-BG.wxl" />
69 <EmbeddedResource Include="WixUI_ca-ES.wxl" /> 72 <EmbeddedResource Include="WixUI_ca-ES.wxl" />
@@ -107,8 +110,26 @@
107 </ItemGroup> 110 </ItemGroup>
108 111
109 <ItemGroup> 112 <ItemGroup>
110 <ProjectReference Include="..\ca\uica.vcxproj" /> 113 <None Include="packages.config" />
111 </ItemGroup> 114 </ItemGroup>
112 115
113 <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), wix.proj))\tools\WixBuild.targets" /> 116 <ItemGroup>
117 <ProjectReference Include="..\ca\uica.vcxproj">
118 <Name>uica</Name>
119 <Project>{F72D34CA-48DA-4DFD-91A9-A0C78BEF6981}</Project>
120 </ProjectReference>
121 </ItemGroup>
122 <Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' AND Exists('$(WixTargetsPath)') " />
123 <Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets') " />
124 <Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
125 <Error Text="WiX Toolset build tools (v4.0 or later) must be installed to build this project. To download the WiX Toolset, go to http://wixtoolset.org/releases/." />
126 </Target>
127 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
128 <PropertyGroup>
129 <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>
130 </PropertyGroup>
131 <Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets'))" />
132 <Error Condition="!Exists('..\..\packages\WixToolset.MSBuild.4.0.0-build-0035\build\WixToolset.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.MSBuild.4.0.0-build-0035\build\WixToolset.MSBuild.props'))" />
133 </Target>
134 <Import Project="..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" />
114</Project> 135</Project>
diff --git a/version.json b/version.json
new file mode 100644
index 00000000..5f857771
--- /dev/null
+++ b/version.json
@@ -0,0 +1,11 @@
1{
2 "version": "4.0",
3 "publicReleaseRefSpec": [
4 "^refs/heads/master$"
5 ],
6 "cloudBuild": {
7 "buildNumber": {
8 "enabled": true
9 }
10 }
11}