├── src ├── Templates │ └── v3 │ │ ├── Items │ │ ├── TextFile │ │ │ ├── TextFile.txt │ │ │ ├── TextFile.ico │ │ │ └── TextFile.vstemplate │ │ ├── IncludeFile │ │ │ ├── IncludeFile.wxi │ │ │ ├── IncludeFile.ico │ │ │ └── IncludeFile.vstemplate │ │ ├── BlankFile │ │ │ ├── BlankFile.ico │ │ │ ├── BlankFile.wxs │ │ │ └── BlankFile.vstemplate │ │ └── LocalizationFile │ │ │ ├── LocalizationFile.ico │ │ │ ├── LocalizationFile.wxl │ │ │ └── LocalizationFile.vstemplate │ │ └── Projects │ │ ├── CustomActionCPP │ │ ├── CustomAction.def │ │ ├── stdafx.cpp │ │ ├── CustomActionCPP.ico │ │ ├── stdafx.h │ │ ├── CustomAction.cpp │ │ ├── targetver.h │ │ └── CustomActionCPP.vstemplate │ │ ├── WixLibrary │ │ ├── WixLibrary.ico │ │ ├── Library.wxs │ │ ├── WixLibrary.vstemplate │ │ └── setuplibrary.wixproj │ │ ├── WixProject │ │ ├── WixProject.ico │ │ ├── Product.wxs │ │ ├── SetupProject.wixproj │ │ └── WixProject.vstemplate │ │ ├── WixBundleProject │ │ ├── WixBundle.ico │ │ ├── Bundle.Generated.wxs │ │ ├── Bundle.wxs │ │ ├── WixBundle.vstemplate │ │ └── BundleProject.wixproj │ │ ├── WixMergeModule │ │ ├── WixMergeModule.ico │ │ ├── MergeModule.wxs │ │ ├── WixMergeModule.vstemplate │ │ └── MergeModule.wixproj │ │ ├── CustomActionVB │ │ ├── CustomAction.vb │ │ ├── AssemblyInfo.vb │ │ ├── CustomActionVB.vstemplate │ │ └── CustomAction.config │ │ ├── CustomActionCS │ │ ├── CustomAction.cs │ │ ├── AssemblyInfo.cs │ │ ├── CustomActionCS.vstemplate │ │ └── CustomAction.config │ │ └── customaction.config ├── votive.shared │ ├── Templates │ │ └── v3 │ │ │ ├── Items │ │ │ ├── TextFile │ │ │ │ ├── TextFile.txt │ │ │ │ ├── TextFile.ico │ │ │ │ └── TextFile.vstemplate │ │ │ ├── IncludeFile │ │ │ │ ├── IncludeFile.wxi │ │ │ │ ├── IncludeFile.ico │ │ │ │ └── IncludeFile.vstemplate │ │ │ ├── BlankFile │ │ │ │ ├── BlankFile.ico │ │ │ │ ├── BlankFile.wxs │ │ │ │ └── BlankFile.vstemplate │ │ │ └── LocalizationFile │ │ │ │ ├── LocalizationFile.ico │ │ │ │ ├── LocalizationFile.wxl │ │ │ │ └── LocalizationFile.vstemplate │ │ │ └── Projects │ │ │ ├── WixLibrary │ │ │ ├── WixLibrary.ico │ │ │ ├── Library.wxs │ │ │ ├── WixLibrary.vstemplate │ │ │ └── setuplibrary.wixproj │ │ │ ├── WixProject │ │ │ ├── WixProject.ico │ │ │ ├── Product.wxs │ │ │ ├── SetupProject.wixproj │ │ │ └── WixProject.vstemplate │ │ │ ├── WixBundleProject │ │ │ ├── WixBundle.ico │ │ │ ├── Bundle.Generated.wxs │ │ │ ├── Bundle.wxs │ │ │ ├── WixBundle.vstemplate │ │ │ └── BundleProject.wixproj │ │ │ ├── WixMergeModule │ │ │ ├── WixMergeModule.ico │ │ │ ├── MergeModule.wxs │ │ │ ├── WixMergeModule.vstemplate │ │ │ └── MergeModule.wixproj │ │ │ ├── CustomActionVB │ │ │ ├── CustomAction.vb │ │ │ ├── AssemblyInfo.vb │ │ │ ├── CustomActionVB.vstemplate │ │ │ └── CustomAction.config │ │ │ ├── CustomActionCS │ │ │ ├── CustomAction.cs │ │ │ ├── CustomActionCS.vstemplate │ │ │ ├── AssemblyInfo.cs │ │ │ └── CustomAction.config │ │ │ └── customaction.config │ ├── Resources │ │ ├── Delete.png │ │ ├── Package.ico │ │ ├── Splash.bmp │ │ ├── UpArrow.png │ │ ├── imagelis.bmp │ │ ├── DownArrow.png │ │ ├── IncludeFile.ico │ │ ├── ProductFile.ico │ │ ├── ProjectFile.ico │ │ ├── WixLibraryFile.ico │ │ └── LocalizationFile.ico │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── CustomDictionary.xml │ ├── WixWarningLevel.cs │ ├── RunPostBuildEvent.cs │ ├── WixOutputType.cs │ ├── GlobalSuppressions.cs │ ├── votive.shared.shproj │ ├── ProjectBase │ │ ├── VSMDCodeDomProvider.cs │ │ ├── ProjectNode.Events.cs │ │ ├── OAFolderItem.cs │ │ ├── ConfigurationProperties.cs │ │ ├── OAReferenceFolderItem.cs │ │ ├── OANestedProjectItem.cs │ │ ├── ProjectOptions.cs │ │ ├── PropertiesEditorLauncher.cs │ │ ├── NestedProjectBuildDependency.cs │ │ ├── BuildPropertyPage.cs │ │ ├── EnumDependencies.cs │ │ ├── Tracing.cs │ │ ├── VSShellUtilities.cs │ │ ├── LangProj │ │ │ ├── OAVSProjectItem.cs │ │ │ └── OAComReference.cs │ │ └── OANullProperty.cs │ ├── WixVsConstants.cs │ ├── PropertyPages │ │ ├── WixInstallerPropertyPagePanel.cs │ │ ├── WixPathsPropertyPagePanel.cs │ │ ├── WixPathsPropertyPage.cs │ │ ├── WixPropertyPagePanel.Designer.cs │ │ ├── WixToolsSettingsPropertyPage.cs │ │ ├── WixBuildEventsPropertyPagePanel.cs │ │ └── WixToolsSettingsPropertyPagePanel.cs │ ├── ProjectPropertyArgumentException.cs │ ├── Controls │ │ └── WixColorUserControl.Designer.cs │ ├── IProjectSourceNode.cs │ ├── WixDesignPropertyDescriptor.cs │ ├── WixNonMemberDesignPropertyDescriptor.cs │ ├── WixLocalizedCategoryAttribute.cs │ ├── FileSearchHelperMethods.cs │ ├── WixLibraryReferenceNodeProperties.cs │ ├── OAWixProject.cs │ ├── WixLocalizedControlTextAttribute.cs │ ├── WixFileNodeProperties.cs │ ├── WixFolderNodeProperties.cs │ ├── WixLinkedFileNodeProperties.cs │ ├── WixProjectConfig.cs │ └── WixFolderNodeNonMemberProperties.cs ├── common │ ├── WixLogo.png │ ├── WixLogoSmall.png │ ├── precomp.cpp │ ├── WixDistribution.h │ ├── WixDistribution.wxl │ └── wixstrsafe.h ├── Icons │ ├── IncludeFile.ico │ ├── ProductFile.ico │ ├── ProjectFile.ico │ ├── WixBundle.ico │ ├── WixLibrary.ico │ ├── LocalizationFile.ico │ ├── WixLibraryFile.ico │ └── WixMergeModule.ico ├── Schemas │ └── v3 │ │ ├── WixLogo.png │ │ ├── redirects │ │ ├── wix.targets │ │ ├── wix.ca.targets │ │ └── wix.nativeca.targets │ │ └── source.extension.vsixmanifest ├── Votive2010 │ ├── WixLogoDev10.png │ └── source.extension.vsixmanifest ├── Votive2012 │ ├── WixLogoDev11.png │ └── source.extension.vsixmanifest ├── Votive2013 │ ├── WixLogoDev12.png │ └── source.extension.vsixmanifest ├── Votive2015 │ ├── WixLogoDev14.png │ └── source.extension.vsixmanifest ├── Votive2017 │ ├── WixLogoDev15.png │ ├── redirects │ │ └── v3 │ │ │ ├── wix.targets │ │ │ ├── wix.ca.targets │ │ │ └── wix.nativeca.targets │ └── source.extension.vsixmanifest ├── Votive2019 │ ├── WixLogoDev16.png │ └── source.extension.vsixmanifest ├── Votive2022 │ ├── WixLogoDev17.png │ └── source.extension.vsixmanifest └── src.proj ├── tools ├── signing-filter.none.txt ├── bin │ └── NuGet.exe ├── publickey_wix.snk ├── appsettings.json ├── WixBuild.targets ├── Wix.ruleset ├── WixBuild.csproj.targets ├── Traversal.targets └── WixBuild.csproj.props ├── .gitattributes ├── version.json ├── nuget.config ├── .github └── workflows │ └── cla.yml ├── README.md └── appveyor.yml /src/Templates/v3/Items/TextFile/TextFile.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tools/signing-filter.none.txt: -------------------------------------------------------------------------------- 1 | sign-no-files 2 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/TextFile/TextFile.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /tools/bin/NuGet.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/tools/bin/NuGet.exe -------------------------------------------------------------------------------- /src/common/WixLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/common/WixLogo.png -------------------------------------------------------------------------------- /src/Icons/IncludeFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/IncludeFile.ico -------------------------------------------------------------------------------- /src/Icons/ProductFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/ProductFile.ico -------------------------------------------------------------------------------- /src/Icons/ProjectFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/ProjectFile.ico -------------------------------------------------------------------------------- /src/Icons/WixBundle.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/WixBundle.ico -------------------------------------------------------------------------------- /src/Icons/WixLibrary.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/WixLibrary.ico -------------------------------------------------------------------------------- /tools/publickey_wix.snk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/tools/publickey_wix.snk -------------------------------------------------------------------------------- /src/Schemas/v3/WixLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Schemas/v3/WixLogo.png -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/CustomAction.def: -------------------------------------------------------------------------------- 1 | LIBRARY "$projectname$" 2 | 3 | EXPORTS 4 | CustomAction1 5 | -------------------------------------------------------------------------------- /src/common/WixLogoSmall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/common/WixLogoSmall.png -------------------------------------------------------------------------------- /src/Icons/LocalizationFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/LocalizationFile.ico -------------------------------------------------------------------------------- /src/Icons/WixLibraryFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/WixLibraryFile.ico -------------------------------------------------------------------------------- /src/Icons/WixMergeModule.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Icons/WixMergeModule.ico -------------------------------------------------------------------------------- /src/Votive2010/WixLogoDev10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2010/WixLogoDev10.png -------------------------------------------------------------------------------- /src/Votive2012/WixLogoDev11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2012/WixLogoDev11.png -------------------------------------------------------------------------------- /src/Votive2013/WixLogoDev12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2013/WixLogoDev12.png -------------------------------------------------------------------------------- /src/Votive2015/WixLogoDev14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2015/WixLogoDev14.png -------------------------------------------------------------------------------- /src/Votive2017/WixLogoDev15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2017/WixLogoDev15.png -------------------------------------------------------------------------------- /src/Votive2019/WixLogoDev16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2019/WixLogoDev16.png -------------------------------------------------------------------------------- /src/Votive2022/WixLogoDev17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Votive2022/WixLogoDev17.png -------------------------------------------------------------------------------- /src/Templates/v3/Items/IncludeFile/IncludeFile.wxi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/votive.shared/Resources/Delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/Delete.png -------------------------------------------------------------------------------- /src/votive.shared/Resources/Package.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/Package.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/Splash.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/Splash.bmp -------------------------------------------------------------------------------- /src/votive.shared/Resources/UpArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/UpArrow.png -------------------------------------------------------------------------------- /src/votive.shared/Resources/imagelis.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/imagelis.bmp -------------------------------------------------------------------------------- /src/votive.shared/Resources/DownArrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/DownArrow.png -------------------------------------------------------------------------------- /src/Templates/v3/Items/TextFile/TextFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Items/TextFile/TextFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/IncludeFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/IncludeFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/ProductFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/ProductFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/ProjectFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/ProjectFile.ico -------------------------------------------------------------------------------- /src/Templates/v3/Items/BlankFile/BlankFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Items/BlankFile/BlankFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/WixLibraryFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/WixLibraryFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/IncludeFile/IncludeFile.wxi: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/IncludeFile/IncludeFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Items/IncludeFile/IncludeFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Resources/LocalizationFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Resources/LocalizationFile.ico -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixLibrary/WixLibrary.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Projects/WixLibrary/WixLibrary.ico -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixProject/WixProject.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Projects/WixProject/WixProject.ico -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/stdafx.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | // TODO: reference any additional headers you need in STDAFX.H 4 | // and not in this file 5 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixBundleProject/WixBundle.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Projects/WixBundleProject/WixBundle.ico -------------------------------------------------------------------------------- /src/Templates/v3/Items/LocalizationFile/LocalizationFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Items/LocalizationFile/LocalizationFile.ico -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixMergeModule/WixMergeModule.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Projects/WixMergeModule/WixMergeModule.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/BlankFile/BlankFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Items/BlankFile/BlankFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/TextFile/TextFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Items/TextFile/TextFile.ico -------------------------------------------------------------------------------- /version.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "1.0.0", 3 | "cloudBuild": { 4 | "setVersionVariables": true, 5 | "buildNumber": { 6 | "enabled": true 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/CustomActionCPP.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/Templates/v3/Projects/CustomActionCPP/CustomActionCPP.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/IncludeFile/IncludeFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Items/IncludeFile/IncludeFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixLibrary/WixLibrary.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Projects/WixLibrary/WixLibrary.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixProject/WixProject.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Projects/WixProject/WixProject.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixBundleProject/WixBundle.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Projects/WixBundleProject/WixBundle.ico -------------------------------------------------------------------------------- /src/Templates/v3/Items/BlankFile/BlankFile.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/LocalizationFile/LocalizationFile.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Items/LocalizationFile/LocalizationFile.ico -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixMergeModule/WixMergeModule.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wixtoolset/VisualStudioExtension/HEAD/src/votive.shared/Templates/v3/Projects/WixMergeModule/WixMergeModule.ico -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixLibrary/Library.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/BlankFile/BlankFile.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixLibrary/Library.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/LocalizationFile/LocalizationFile.wxl: -------------------------------------------------------------------------------- 1 | 2 | 3 | $loc_YOURLOCSTRING$ 4 | 5 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/LocalizationFile/LocalizationFile.wxl: -------------------------------------------------------------------------------- 1 | 2 | 3 | $loc_YOURLOCSTRING$ 4 | 5 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixBundleProject/Bundle.Generated.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixBundleProject/Bundle.Generated.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionVB/CustomAction.vb: -------------------------------------------------------------------------------- 1 | Public Class CustomActions 2 | 3 | _ 4 | Public Shared Function CustomAction1(ByVal session As Session) As ActionResult 5 | session.Log("Begin CustomAction1") 6 | 7 | Return ActionResult.Success 8 | End Function 9 | 10 | End Class 11 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionVB/CustomAction.vb: -------------------------------------------------------------------------------- 1 | Public Class CustomActions 2 | 3 | _ 4 | Public Shared Function CustomAction1(ByVal session As Session) As ActionResult 5 | session.Log("Begin CustomAction1") 6 | 7 | Return ActionResult.Success 8 | End Function 9 | 10 | End Class 11 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/stdafx.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "targetver.h" 4 | 5 | #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 6 | // Windows Header Files: 7 | #include 8 | #include 9 | #include 10 | 11 | // WiX Header Files: 12 | #include 13 | 14 | 15 | // TODO: reference additional headers your program requires here 16 | -------------------------------------------------------------------------------- /tools/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "SignClient": { 3 | "AzureAd": { 4 | "AADInstance": "https://login.microsoftonline.com/", 5 | "ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8", 6 | "TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e" 7 | }, 8 | "Service": { 9 | "Url": "https://codesign.dotnetfoundation.org/", 10 | "ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/common/precomp.cpp: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | #include "precomp.h" 4 | 5 | // warning LNK4221: 6 | // This object file does not define any previously undefined public symbols, 7 | // so it will not be used by any link operation that consumes this library. 8 | #pragma warning(disable : 4221) 9 | -------------------------------------------------------------------------------- /src/votive.shared/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 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 | using System.Reflection; 4 | using System.Runtime.InteropServices; 5 | 6 | [assembly: AssemblyTitle("Votive - WiX Toolset")] 7 | [assembly: AssemblyDescription("WiX Visual Studio Package")] 8 | [assembly: AssemblyCulture("")] 9 | [assembly: ComVisible(false)] 10 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixBundleProject/Bundle.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /nuget.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixBundleProject/Bundle.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCS/CustomAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | $if$ ($targetframeworkversion$ == 3.5)using System.Linq; 4 | $endif$using System.Text; 5 | using Microsoft.Deployment.WindowsInstaller; 6 | 7 | namespace $safeprojectname$ 8 | { 9 | public class CustomActions 10 | { 11 | [CustomAction] 12 | public static ActionResult CustomAction1(Session session) 13 | { 14 | session.Log("Begin CustomAction1"); 15 | 16 | return ActionResult.Success; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/common/WixDistribution.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 3 | 4 | 5 | #ifndef __WIXDISTRIBUTION_FILE_H_ 6 | #define __WIXDISTRIBUTION_FILE_H_ 7 | 8 | #define VER_COMPANY_NAME ".NET Foundation" 9 | #define VER_LEGAL_COPYRIGHT "Copyright (c) .NET Foundation and contributors.\240 All rights reserved." 10 | #define VER_PRODUCT_NAME "WiX Toolset Visual Studio Extension" 11 | 12 | #endif // __WIXDISTRIBUTION_FILE_H_ 13 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionCS/CustomAction.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | $if$ ($targetframeworkversion$ == 3.5)using System.Linq; 4 | $endif$using System.Text; 5 | using Microsoft.Deployment.WindowsInstaller; 6 | 7 | namespace $safeprojectname$ 8 | { 9 | public class CustomActions 10 | { 11 | [CustomAction] 12 | public static ActionResult CustomAction1(Session session) 13 | { 14 | session.Log("Begin CustomAction1"); 15 | 16 | return ActionResult.Success; 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/votive.shared/CustomDictionary.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | msi 7 | msm 8 | wix 9 | wixlib 10 | wixpdb 11 | wixproj 12 | wxi 13 | wxl 14 | wxs 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixMergeModule/MergeModule.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tools/WixBuild.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 12 | 13 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/TextFile/TextFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Text File 4 | A blank text file (.txt) 5 | TextFile.ico 6 | WiX 7 | 200 8 | TextFile.txt 9 | true 10 | 11 | 12 | TextFile.txt 13 | 14 | 15 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixMergeModule/MergeModule.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /tools/Wix.ruleset: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/TextFile/TextFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Text File 4 | A blank text file (.txt) 5 | TextFile.ico 6 | WiX 7 | 200 8 | TextFile.txt 9 | true 10 | 11 | 12 | TextFile.txt 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/WixBuild.csproj.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | true 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/BlankFile/BlankFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Installer File 4 | A blank Windows Installer XML file (.wxs) 5 | BlankFile.ico 6 | WiX 7 | 20 8 | File.wxs 9 | true 10 | 11 | 12 | BlankFile.wxs 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/votive.shared/WixWarningLevel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | 8 | /// 9 | /// Enumeration for the warning level used during build time 10 | /// 11 | public enum WixWarningLevel 12 | { 13 | /// 14 | /// No warnings at all. 15 | /// 16 | None, 17 | 18 | /// 19 | /// Only the more important warnings are shown. 20 | /// 21 | Normal, 22 | 23 | /// 24 | /// All possible warnings. 25 | /// 26 | Pedantic, 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/IncludeFile/IncludeFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Include File 4 | An empty Windows Installer XML include file (.wxi) 5 | IncludeFile.ico 6 | WiX 7 | 30 8 | Include.wxi 9 | true 10 | 11 | 12 | IncludeFile.wxi 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/BlankFile/BlankFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Installer File 4 | A blank Windows Installer XML file (.wxs) 5 | BlankFile.ico 6 | WiX 7 | 20 8 | File.wxs 9 | true 10 | 11 | 12 | BlankFile.wxs 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/IncludeFile/IncludeFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Include File 4 | An empty Windows Installer XML include file (.wxi) 5 | IncludeFile.ico 6 | WiX 7 | 30 8 | Include.wxi 9 | true 10 | 11 | 12 | IncludeFile.wxi 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Templates/v3/Items/LocalizationFile/LocalizationFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Localization File 4 | An empty Windows Installer XML localization file (.wxl) 5 | LocalizationFile.ico 6 | WiX 7 | 40 8 | Strings.wxl 9 | true 10 | 11 | 12 | LocalizationFile.wxl 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.github/workflows/cla.yml: -------------------------------------------------------------------------------- 1 | name: "CLA-Bot" 2 | on: 3 | issue_comment: 4 | types: [ created ] 5 | pull_request_target: 6 | types: [ opened, closed, synchronize ] 7 | 8 | jobs: 9 | clabot: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: "CLA-Bot signature check" 13 | uses: cla-assistant/github-action@v2.3.0 14 | if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' 15 | env: 16 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 17 | PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOT_ACCESS_TOKEN }} 18 | with: 19 | remote-repository-name: .github 20 | path-to-signatures: '.github/signatures/cla.json' 21 | path-to-document: 'https://github.com/wixtoolset/.github/blob/master/DNFCLA.md' 22 | allowlist: wixbot,dependabot[bot] 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WiX v3 is out of community support 2 | 3 | See https://www.firegiant.com/wixtoolset/ for the latest information about the WiX Toolset. 4 | 5 | 6 | ### WiX v3 - Visual Studio Extension (aka: Votive) 7 | 8 | This repository contains the code for the WiX v3 - Visual Studio Extension. To install 9 | the extension, use the Extension Manager inside Visual Studio or visit the 10 | [Visual Studio Marketplace][marketplace]. 11 | 12 | **Note:** This Visual Studio Extension DOES NOT support WiX v4 based projects. To load 13 | WiX v4 projects in Visual Studio, install [HeatWave for VS2022][heatwave] (or [for VS2019][heatwave16]). 14 | 15 | 16 | [marketplace]: https://marketplace.visualstudio.com/search?term=wix%20toolset&target=VS&sortBy=Relevance 17 | [heatwave]: https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev17 18 | [heatwave16]: https://marketplace.visualstudio.com/items?itemName=FireGiant.FireGiantHeatWaveDev16 19 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Items/LocalizationFile/LocalizationFile.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Localization File 4 | An empty Windows Installer XML localization file (.wxl) 5 | LocalizationFile.ico 6 | WiX 7 | 40 8 | Strings.wxl 9 | true 10 | 11 | 12 | LocalizationFile.wxl 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/votive.shared/RunPostBuildEvent.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | 7 | /// 8 | /// Enumerates the values of the RunPostBuildEvent MSBuild property. 9 | /// 10 | public enum RunPostBuildEvent 11 | { 12 | /// 13 | /// The post-build event is always run. 14 | /// 15 | Always, 16 | 17 | /// 18 | /// The post-build event is only run when the build succeeds. 19 | /// 20 | OnBuildSuccess, 21 | 22 | /// 23 | /// The post-build event is only run if the project's output is updated. 24 | /// 25 | OnOutputUpdated, 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/CustomAction.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.h" 2 | 3 | 4 | UINT __stdcall CustomAction1( 5 | MSIHANDLE hInstall 6 | ) 7 | { 8 | HRESULT hr = S_OK; 9 | UINT er = ERROR_SUCCESS; 10 | 11 | hr = WcaInitialize(hInstall, "CustomAction1"); 12 | ExitOnFailure(hr, "Failed to initialize"); 13 | 14 | WcaLog(LOGMSG_STANDARD, "Initialized."); 15 | 16 | // TODO: Add your custom action code here. 17 | 18 | 19 | LExit: 20 | er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 21 | return WcaFinalize(er); 22 | } 23 | 24 | 25 | // DllMain - Initialize and cleanup WiX custom action utils. 26 | extern "C" BOOL WINAPI DllMain( 27 | __in HINSTANCE hInst, 28 | __in ULONG ulReason, 29 | __in LPVOID 30 | ) 31 | { 32 | switch(ulReason) 33 | { 34 | case DLL_PROCESS_ATTACH: 35 | WcaGlobalInitialize(hInst); 36 | break; 37 | 38 | case DLL_PROCESS_DETACH: 39 | WcaGlobalFinalize(); 40 | break; 41 | } 42 | 43 | return TRUE; 44 | } 45 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/targetver.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #ifndef WINVER // Specifies that the minimum required platform is Windows XP. 4 | #define WINVER 0x0501 // Change this to the appropriate value to target other versions of Windows. 5 | #endif 6 | 7 | #ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows XP. 8 | #define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows. 9 | #endif 10 | 11 | #ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 6.0 SP3. 12 | #define _WIN32_IE 0x0603 // Change this to the appropriate value to target other versions of IE. 13 | #endif 14 | 15 | #ifndef _WIN32_MSI // Specifies that the minimum required MSI version is MSI 3.1 16 | #define _WIN32_MSI 310 // Change this to the appropriate value to target other versions of MSI. 17 | #endif 18 | -------------------------------------------------------------------------------- /src/common/WixDistribution.wxl: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | .NET Foundation 7 | Copyright (c) .NET Foundation and contributors. All rights reserved. 8 | WiX Toolset Visual Studio Extension 9 | wixtoolset.org 10 | WiX Toolset 11 | https://wixtoolset.org 12 | https://wixtoolset.org/releases/feed/v3.11 13 | 14 | -------------------------------------------------------------------------------- /src/Schemas/v3/redirects/wix.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Schemas/v3/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WiX Toolset v3 Schemas for Visual Studio 6 | Visual Studio integraion for the WiX Toolset v3 schemas 7 | https://wixtoolset.org/ 8 | WixLogo.png 9 | WixLogo.png 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/Votive2017/redirects/v3/wix.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Schemas/v3/redirects/wix.ca.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Votive2017/redirects/v3/wix.ca.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/common/wixstrsafe.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 3 | 4 | 5 | #pragma warning(push) 6 | #pragma warning(disable: 6001 6011 6029 6031 6053 6054 6057 6059 6063 6064 6066 6067 6200 6201 6202 6203 6204 6209 6211 6214 6215 6216 6217 6219 6220 6221 6225 6226 6230 6235 6236 6237 6239 6240 6242 6244 6246 6248 6250 6255 6258 6259 6260 6262 6263 6268 6269 6270 6271 6272 6273 6274 6276 6277 6278 6279 6280 6281 6282 6283 6284 6285 6286 6287 6288 6289 6290 6291 6292 6293 6294 6295 6296 6297 6298 6299 6302 6303 6305 6306 6308 6309 6310 6312 6313 6314 6315 6316 6317 6318 6319 6320 6322 6323 6324 6326 6327 6328 6329 6331 6332 6333 6334 6335 6336 6381 6383 6384 6385 6386 6387 6388 6400 6401 6500 6501 6503 6504 6505 6506 6507 6508 6509 6510 6511 6512 6513 6514 6515 6516 6517 6518 6521 6522 6523 6525 6526 6530 6535 6540 6990 6991 6992 6993 6994 6995) 7 | #include 8 | #pragma warning(pop) 9 | -------------------------------------------------------------------------------- /src/src.proj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/votive.shared/WixOutputType.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | 8 | /// 9 | /// Enumeration for the various output types for a Wix project. 10 | /// 11 | public enum WixOutputType 12 | { 13 | /// 14 | /// Wix project that builds an MSI file. 15 | /// 16 | Package, 17 | 18 | /// 19 | /// Wix project that builds an MSM file. 20 | /// 21 | Module, 22 | 23 | /// 24 | /// Wix project that builds a wixlib file. 25 | /// 26 | Library, 27 | 28 | /// 29 | /// Wix project that builds a exe file. 30 | /// 31 | Bundle, 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/votive.shared/GlobalSuppressions.cs: -------------------------------------------------------------------------------- 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 | using System.Diagnostics.CodeAnalysis; 4 | 5 | [assembly: SuppressMessage("Microsoft.Performance", "CA1812:AvoidUninstantiatedInternalClasses", Scope = "type", Target = "WixToolset.VisualStudioExtension.WixPackageSettings+MachineSettingEnum`1")] 6 | 7 | [assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "WixToolset.VisualStudioExtension.Build.Tasks", Justification = "Ignoring this warning...we want this namespace, but don't have enough classes to go in it right now to satisfy the rule.")] 8 | [assembly: SuppressMessage("Microsoft.Design", "CA1020:AvoidNamespacesWithFewTypes", Scope = "namespace", Target = "WixToolset.VisualStudioExtension.Controls")] 9 | [assembly: SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "votive")] 10 | -------------------------------------------------------------------------------- /src/Schemas/v3/redirects/wix.nativeca.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/Votive2017/redirects/v3/wix.nativeca.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | $(MSBuildProgramFiles32)\MSBuild\Microsoft\WiX\v3.x\ 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/votive.shared/votive.shared.shproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 72a14880-ec19-43b4-a4f0-dc9ddae2c763 5 | 14.0 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/VSMDCodeDomProvider.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using System.Collections.Generic; 5 | using System.Diagnostics; 6 | using System.Globalization; 7 | using System.Runtime.InteropServices; 8 | using System.CodeDom.Compiler; 9 | using Microsoft.VisualStudio.Designer.Interfaces; 10 | using IOleServiceProvider = Microsoft.VisualStudio.OLE.Interop.IServiceProvider; 11 | using IServiceProvider = System.IServiceProvider; 12 | 13 | namespace Microsoft.VisualStudio.Package 14 | { 15 | internal class VSMDCodeDomProvider : IVSMDCodeDomProvider 16 | { 17 | private CodeDomProvider provider; 18 | public VSMDCodeDomProvider(CodeDomProvider provider) 19 | { 20 | if (provider == null) 21 | throw new ArgumentNullException("provider"); 22 | this.provider = provider; 23 | } 24 | 25 | #region IVSMDCodeDomProvider Members 26 | object IVSMDCodeDomProvider.CodeDomProvider 27 | { 28 | get { return provider; } 29 | } 30 | #endregion 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixProject/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixProject/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/ProjectNode.Events.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace Microsoft.VisualStudio.Package 4 | { 5 | using System; 6 | using System.Diagnostics; 7 | using Microsoft.VisualStudio.Shell.Interop; 8 | 9 | public partial class ProjectNode 10 | { 11 | #region fields 12 | private EventHandler projectPropertiesListeners; 13 | #endregion 14 | 15 | #region events 16 | public event EventHandler OnProjectPropertyChanged 17 | { 18 | add { projectPropertiesListeners += value; } 19 | remove { projectPropertiesListeners -= value; } 20 | } 21 | #endregion 22 | 23 | #region methods 24 | protected void RaiseProjectPropertyChanged(string propertyName, string oldValue, string newValue) 25 | { 26 | if (null != projectPropertiesListeners) 27 | { 28 | projectPropertiesListeners(this, new ProjectPropertyChangedArgs(propertyName, oldValue, newValue)); 29 | } 30 | } 31 | #endregion 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/votive.shared/WixVsConstants.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | 7 | /// 8 | /// Contains constants for VS integration related APIs 9 | /// 10 | //// Keep these in alphabetical order for easy referencing. 11 | internal static class WixVsConstants 12 | { 13 | // Command id and command set guid for Generate Code Metrics menu command. we are using these 14 | // private variables because we could not find such ids in the API. We should remove these variables 15 | // and use the API whenever available. 16 | public const uint CommandExploreFolderInWindows = 1635; 17 | public const uint CommandGenerateCodeMetricsAnalyzeMenu = 1027; 18 | public const uint CommandGenerateCodeMetricsContextMenu = 768; 19 | public const uint CommandRefreshToolbox = 4137; 20 | 21 | public static readonly Guid GuidGenerateCodeMetrics = new Guid("{79989dd6-4c13-4d10-9872-73538668d037}"); 22 | public static readonly Guid GuidRefreshToolbox = new Guid("C90DA239-5787-47F4-8477-14580555AD76"); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/Votive2010/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WiX v3 - Visual Studio 2010 Extension 5 | WiX Toolset 6 | |Votive2010;GetBuildVersion| 7 | 1033 8 | false 9 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 10 | https://wixtoolset.org/ 11 | WixLogoDev10.png 12 | WixLogoDev10.png 13 | 14 | 15 | Pro 16 | 17 | 18 | 19 | 20 | 21 | 22 | |votive;PkgdefProjectOutputGroup| 23 | |Votive| 24 | ProjectTemplates 25 | ItemTemplates 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Votive2012/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WiX v3 - Visual Studio 2012 Extension 5 | WiX Toolset 6 | |Votive2012;GetBuildVersion| 7 | 1033 8 | false 9 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 10 | https://wixtoolset.org/ 11 | WixLogoDev11.png 12 | WixLogoDev11.png 13 | 14 | 15 | Pro 16 | 17 | 18 | 19 | 20 | 21 | 22 | |votive;PkgdefProjectOutputGroup| 23 | |Votive| 24 | ProjectTemplates 25 | ItemTemplates 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Votive2013/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WiX v3 - Visual Studio 2013 Extension 5 | WiX Toolset 6 | |Votive2013;GetBuildVersion| 7 | 1033 8 | false 9 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 10 | https://wixtoolset.org/ 11 | WixLogoDev12.png 12 | WixLogoDev12.png 13 | 14 | 15 | Pro 16 | 17 | 18 | 19 | 20 | 21 | 22 | |votive;PkgdefProjectOutputGroup| 23 | |Votive| 24 | ProjectTemplates 25 | ItemTemplates 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionVB/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' General Information about an assembly is controlled through the following 6 | ' set of attributes. Change these attribute values to modify the information 7 | ' associated with an assembly. 8 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionVB/AssemblyInfo.vb: -------------------------------------------------------------------------------- 1 | Imports System 2 | Imports System.Reflection 3 | Imports System.Runtime.InteropServices 4 | 5 | ' General Information about an assembly is controlled through the following 6 | ' set of attributes. Change these attribute values to modify the information 7 | ' associated with an assembly. 8 | 9 | ' Review the values of the assembly attributes 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 'The following GUID is for the ID of the typelib if this project is exposed to COM 21 | 22 | 23 | ' Version information for an assembly consists of the following four values: 24 | ' 25 | ' Major Version 26 | ' Minor Version 27 | ' Build Number 28 | ' Revision 29 | ' 30 | ' You can specify all the values or you can default the Build and Revision Numbers 31 | ' by using the '*' as shown below: 32 | ' 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /src/Votive2015/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | WiX v3 - Visual Studio 2015 Extension 5 | WiX Toolset 6 | |Votive2015;GetBuildVersion| 7 | 1033 8 | false 9 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 10 | https://wixtoolset.org/ 11 | WixLogoDev14.png 12 | WixLogoDev14.png 13 | 14 | 15 | Pro 16 | Community 17 | 18 | 19 | 20 | 21 | 22 | 23 | |votive;PkgdefProjectOutputGroup| 24 | |Votive| 25 | ProjectTemplates 26 | ItemTemplates 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionCS/CustomActionCS.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | C# Custom Action Project 5 | A project for creating an MSI custom action 6 | 7 | WiX 8 | Microsoft.Deployment.WindowsInstaller.CustomActionCS 9 | 2.0 10 | 60 11 | 1 12 | true 13 | CustomAction 14 | true 15 | 16 | 17 | 18 | CustomAction.cs 19 | AssemblyInfo.cs 20 | CustomAction.config 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionVB/CustomActionVB.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VB Custom Action Project 5 | A project for creating an MSI custom action 6 | 7 | WiX 8 | Microsoft.Deployment.WindowsInstaller.CustomActionVB 9 | 2.0 10 | 70 11 | 1 12 | true 13 | CustomAction 14 | true 15 | 16 | 17 | 18 | CustomAction.vb 19 | AssemblyInfo.vb 20 | CustomAction.config 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixInstallerPropertyPagePanel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using System; 6 | using System.Diagnostics; 7 | using System.Windows.Forms; 8 | 9 | /// 10 | /// Property page contents for the Wix Project Build Settings page. 11 | /// 12 | internal partial class WixInstallerPropertyPagePanel : WixPropertyPagePanel 13 | { 14 | // ========================================================================================= 15 | // Constructors 16 | // ========================================================================================= 17 | 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The parent property page to which this is bound. 22 | public WixInstallerPropertyPagePanel(WixPropertyPage parentPropertyPage) 23 | : base(parentPropertyPage) 24 | { 25 | this.InitializeComponent(); 26 | 27 | this.outputNameTextBox.Tag = WixProjectFileConstants.OutputName; 28 | this.comboOutputType.Tag = WixProjectFileConstants.OutputType; 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCS/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("$projectname$")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyCompany("$registeredorganization$")] 11 | [assembly: AssemblyProduct("$projectname$")] 12 | [assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("$guid1$")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionCS/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("$projectname$")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyCompany("$registeredorganization$")] 11 | [assembly: AssemblyProduct("$projectname$")] 12 | [assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("$guid1$")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | // You can specify all the values or you can default the Build and Revision Numbers 32 | // by using the '*' as shown below: 33 | // [assembly: AssemblyVersion("1.0.*")] 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixLibrary/WixLibrary.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Setup Library Project 4 | A project for creating a wixlib library 5 | WixLibrary.ico 6 | WiX 7 | 40 8 | 1 9 | true 10 | SetupLibrary 11 | true 12 | 13 | 14 | 15 | Library.wxs 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCS/CustomActionCS.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | C# Custom Action Project for WiX v3 5 | A project for creating an MSI custom action using WiX Toolset v3 6 | 7 | 8 | 9 | 10 | 11 | WiX 12 | Microsoft.Deployment.WindowsInstaller.CustomActionCS 13 | 2.0 14 | 60 15 | 1 16 | true 17 | CustomAction 18 | true 19 | 20 | 21 | 22 | CustomAction.cs 23 | AssemblyInfo.cs 24 | CustomAction.config 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionVB/CustomActionVB.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | VB Custom Action Project for WiX v3 5 | A project for creating an MSI custom action using WiX Toolset v3 6 | 7 | 8 | 9 | 10 | 11 | WiX 12 | Microsoft.Deployment.WindowsInstaller.CustomActionVB 13 | 2.0 14 | 70 15 | 1 16 | true 17 | CustomAction 18 | true 19 | 20 | 21 | 22 | CustomAction.vb 23 | AssemblyInfo.vb 24 | CustomAction.config 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/OAFolderItem.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Shell; 6 | using System.Runtime.InteropServices; 7 | using System.Collections.Generic; 8 | using System.Collections; 9 | using System.Diagnostics; 10 | using System.IO; 11 | using IServiceProvider = System.IServiceProvider; 12 | using Microsoft.VisualStudio.OLE.Interop; 13 | using EnvDTE; 14 | using System.Diagnostics.CodeAnalysis; 15 | 16 | namespace Microsoft.VisualStudio.Package.Automation 17 | { 18 | /// 19 | /// Represents an automation object for a folder in a project 20 | /// 21 | [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")] 22 | [ComVisible(true), CLSCompliant(false)] 23 | public class OAFolderItem : OAProjectItem 24 | { 25 | #region ctors 26 | public OAFolderItem(OAProject project, FolderNode node) 27 | : base(project, node) 28 | { 29 | } 30 | 31 | #endregion 32 | 33 | #region overridden methods 34 | public override ProjectItems Collection 35 | { 36 | get 37 | { 38 | ProjectItems items = new OAProjectItems(this.Project, this.Node); 39 | return items; 40 | } 41 | } 42 | 43 | public override ProjectItems ProjectItems 44 | { 45 | get 46 | { 47 | return this.Collection; 48 | } 49 | } 50 | #endregion 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCPP/CustomActionCPP.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | C++ Custom Action Project for WiX v3 5 | A project for creating an MSI custom action using WiX Toolset v3 6 | CustomActionCPP.ico 7 | 8 | 9 | 10 | 11 | WiX 12 | Microsoft.Deployment.WindowsInstaller.CustomActionCPP 13 | 2.0 14 | 80 15 | 1 16 | true 17 | CustomAction 18 | true 19 | 20 | 21 | 22 | CustomAction.cpp 23 | CustomAction.def 24 | stdafx.cpp 25 | stdafx.h 26 | targetver.h 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/customaction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixPathsPropertyPagePanel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using System; 6 | using System.Collections.Generic; 7 | using System.ComponentModel; 8 | using System.Drawing; 9 | using System.Text; 10 | using System.Windows.Forms; 11 | 12 | /// 13 | /// Property page contents for the Paths property page 14 | /// 15 | /// 16 | internal partial class WixPathsPropertyPagePanel : WixPropertyPagePanel 17 | { 18 | // ========================================================================================= 19 | // Constructors 20 | // ========================================================================================= 21 | 22 | /// 23 | /// Initilizes a new instance of the WixPathsPropertyPagePanel class 24 | /// 25 | /// The parent property page to which this is bound 26 | public WixPathsPropertyPagePanel(WixPropertyPage parentPropertyPage) 27 | : base(parentPropertyPage) 28 | { 29 | this.InitializeComponent(); 30 | 31 | this.referencePathsFoldersSelector.Tag = WixProjectFileConstants.ReferencePaths; 32 | this.includePathsFolderSelector.Tag = WixProjectFileConstants.IncludeSearchPaths; 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionCS/CustomAction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/CustomActionVB/CustomAction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/customaction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionCS/CustomAction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/CustomActionVB/CustomAction.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectPropertyArgumentException.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.Runtime.Serialization; 7 | using System.ComponentModel; 8 | 9 | /// 10 | /// Exception thrown when an invalid property is entered on the project property pages 11 | /// 12 | [Serializable] 13 | internal class ProjectPropertyArgumentException : ArgumentException 14 | { 15 | // ========================================================================================= 16 | // Constructors 17 | // ========================================================================================= 18 | 19 | /// 20 | /// Constructor for the ProjectPropertyArgumentException 21 | /// 22 | /// Error message associated with the exception 23 | public ProjectPropertyArgumentException(string message) 24 | : base(message) 25 | { 26 | } 27 | 28 | /// 29 | /// Creates a new deserialized exception instance. 30 | /// 31 | /// Serialization info. 32 | /// Streaming context. 33 | protected ProjectPropertyArgumentException(SerializationInfo info, StreamingContext context) 34 | : base(info, context) 35 | { 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixLibrary/WixLibrary.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Setup Library Project for WiX v3 4 | A project for creating a wixlib library using WiX Toolset v3 5 | WixLibrary.ico 6 | 7 | 8 | 9 | 10 | WiX 11 | 40 12 | 1 13 | true 14 | SetupLibrary 15 | true 16 | 17 | 18 | 19 | Library.wxs 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/votive.shared/Controls/WixColorUserControl.Designer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.Controls 4 | { 5 | partial class WixColorUserControl 6 | { 7 | /// 8 | /// Required designer variable. 9 | /// 10 | private System.ComponentModel.IContainer components = null; 11 | 12 | /// 13 | /// Clean up any resources being used. 14 | /// 15 | /// true if managed resources should be disposed; otherwise, false. 16 | protected override void Dispose(bool disposing) 17 | { 18 | if (disposing && (components != null)) 19 | { 20 | components.Dispose(); 21 | } 22 | base.Dispose(disposing); 23 | } 24 | 25 | #region Component Designer generated code 26 | 27 | /// 28 | /// Required method for Designer support - do not modify 29 | /// the contents of this method with the code editor. 30 | /// 31 | private void InitializeComponent() 32 | { 33 | this.SuspendLayout(); 34 | // 35 | // WixColorUserControl 36 | // 37 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 38 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 39 | this.Name = "WixColorUserControl"; 40 | this.ResumeLayout(false); 41 | 42 | } 43 | 44 | #endregion 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/votive.shared/IProjectSourceNode.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System.Diagnostics.CodeAnalysis; 6 | 7 | /// 8 | /// This interface provides the ability to identify the items which have the cability of including / excluding 9 | /// themselves to / from the project system. It also tells if the item is a member of the project or not. 10 | /// 11 | public interface IProjectSourceNode 12 | { 13 | /// 14 | /// Gets if the item is not a member of the project. 15 | /// 16 | [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "NonMember")] 17 | bool IsNonMemberItem 18 | { 19 | get; 20 | } 21 | 22 | /// 23 | /// Exclude the item from the project system. 24 | /// 25 | /// Returns success or failure code. 26 | int ExcludeFromProject(); 27 | 28 | /// 29 | /// Include the item into the project system. 30 | /// 31 | /// Returns success or failure code. 32 | int IncludeInProject(); 33 | 34 | /// 35 | /// Include the item into the project system recursively. 36 | /// 37 | /// Flag that indicates if the inclusion should be recursive or not. 38 | /// Returns success or failure code. 39 | int IncludeInProject(bool recursive); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /tools/Traversal.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | true 11 | 12 | 13 | 14 | 15 | $(BuildInParallel) 16 | 17 | 18 | 19 | 21 | 22 | 23 | 24 | 25 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | <_NonParallelProjects Include="@(ProjectReference)" Condition=" '%(BuildInParallel)'!='true' " /> 36 | <_ParallelProjects Include="@(ProjectReference)" Condition=" '%(BuildInParallel)'=='true' " /> 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixMergeModule/WixMergeModule.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Merge Module Project 4 | A project for creating a Windows Installer XML based MSM file 5 | WixMergeModule.ico 6 | WiX 7 | 30 8 | 1 9 | true 10 | MergeModule 11 | true 12 | 13 | 14 | 15 | MergeModule.wxs 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixBundleProject/WixBundle.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bootstrapper Project 4 | A project for creating a Windows Installer XML based EXE setup layout 5 | WixBundle.ico 6 | WiX 7 | 50 8 | 1 9 | true 10 | Bootstrapper 11 | true 12 | false 13 | 14 | 15 | 16 | Bundle.wxs 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixPathsPropertyPage.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Runtime.InteropServices; 8 | using System.Text; 9 | 10 | /// 11 | /// Property page for the include and reference paths 12 | /// 13 | [ComVisible(true)] 14 | [Guid("3ED6B659-F2FA-4252-8B3A-3736B04BFC4D")] 15 | internal class WixPathsPropertyPage : WixPropertyPage 16 | { 17 | // ========================================================================================= 18 | // Constructors 19 | // ========================================================================================= 20 | 21 | /// 22 | /// Initializes a new instance of WixPathsPropertyPage 23 | /// 24 | public WixPathsPropertyPage() 25 | { 26 | this.PageName = WixStrings.WixPathsPropertyPageName; 27 | } 28 | 29 | // ========================================================================================= 30 | // Methods 31 | // ========================================================================================= 32 | 33 | /// 34 | /// Creates the controls that constitute the property page. This should be safe to re-entrancy. 35 | /// 36 | /// The newly created main control that hosts the property page. 37 | protected override WixPropertyPagePanel CreatePropertyPagePanel() 38 | { 39 | return new WixPathsPropertyPagePanel(this); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixPropertyPagePanel.Designer.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | partial class WixPropertyPagePanel 6 | { 7 | /// 8 | /// Required designer variable. 9 | /// 10 | private System.ComponentModel.IContainer components = null; 11 | 12 | /// 13 | /// Clean up any resources being used. 14 | /// 15 | /// true if managed resources should be disposed; otherwise, false. 16 | protected override void Dispose(bool disposing) 17 | { 18 | if (disposing && (components != null)) 19 | { 20 | components.Dispose(); 21 | } 22 | base.Dispose(disposing); 23 | } 24 | 25 | #region Component Designer generated code 26 | 27 | /// 28 | /// Required method for Designer support - do not modify 29 | /// the contents of this method with the code editor. 30 | /// 31 | private void InitializeComponent() 32 | { 33 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(WixPropertyPagePanel)); 34 | this.SuspendLayout(); 35 | // 36 | // WixPropertyPagePanel 37 | // 38 | resources.ApplyResources(this, "$this"); 39 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 40 | this.Name = "WixPropertyPagePanel"; 41 | this.ResumeLayout(false); 42 | 43 | } 44 | 45 | #endregion 46 | 47 | 48 | 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/votive.shared/WixDesignPropertyDescriptor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using Microsoft.VisualStudio.Package; 8 | 9 | /// 10 | /// Subclasses to allow for non-bolded text in the property grid. 11 | /// 12 | public class WixDesignPropertyDescriptor : DesignPropertyDescriptor 13 | { 14 | // ========================================================================================= 15 | // Constructors 16 | // ========================================================================================= 17 | 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The to wrap. 22 | public WixDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 23 | : base(propertyDescriptor) 24 | { 25 | } 26 | 27 | // ========================================================================================= 28 | // Methods 29 | // ========================================================================================= 30 | 31 | /// 32 | /// By returning false here, we're always going to show the property as non-bolded. 33 | /// 34 | /// The component to check. 35 | /// Always returns false. 36 | public override bool ShouldSerializeValue(object component) 37 | { 38 | return false; 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixToolsSettingsPropertyPage.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Runtime.InteropServices; 8 | using System.Text; 9 | 10 | /// 11 | /// Property page for the compiler/linker/librarian command line settings 12 | /// 13 | [ComVisible(true)] 14 | [Guid("37DA98B6-C5F4-4ce6-867F-553EBE590ABE")] 15 | internal class WixToolsSettingsPropertyPage : WixPropertyPage 16 | { 17 | // ========================================================================================= 18 | // Constructors 19 | // ========================================================================================= 20 | 21 | /// 22 | /// Initializes a new instance of WixToolsSettingsPropertyPage class 23 | /// 24 | public WixToolsSettingsPropertyPage() 25 | { 26 | this.PageName = WixStrings.WixToolsSettingsPropertyPageName; 27 | } 28 | 29 | // ========================================================================================= 30 | // Methods 31 | // ========================================================================================= 32 | 33 | /// 34 | /// Creates the controls that constitute the property page. This should be safe to re-entrancy. 35 | /// 36 | /// The newly created main control that hosts the property page. 37 | protected override WixPropertyPagePanel CreatePropertyPagePanel() 38 | { 39 | return new WixToolsSettingsPropertyPagePanel(this); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixMergeModule/WixMergeModule.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Merge Module Project for WiX v3 4 | A project for creating a WiX based MSM file using WiX Toolset v3 5 | WixMergeModule.ico 6 | 7 | 8 | 9 | 10 | WiX 11 | 30 12 | 1 13 | true 14 | MergeModule 15 | true 16 | 17 | 18 | 19 | MergeModule.wxs 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixLibrary/setuplibrary.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | 3.10 7 | $guid1$ 8 | 2.0 9 | $safeprojectname$ 10 | Library 11 | 12 | 13 | bin\$(Configuration)\ 14 | obj\$(Configuration)\ 15 | Debug 16 | 17 | 18 | bin\$(Configuration)\ 19 | obj\$(Configuration)\ 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixProject/SetupProject.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | 3.10 7 | $guid1$ 8 | 2.0 9 | $safeprojectname$ 10 | Package 11 | 12 | 13 | bin\$(Configuration)\ 14 | obj\$(Configuration)\ 15 | Debug 16 | 17 | 18 | bin\$(Configuration)\ 19 | obj\$(Configuration)\ 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixMergeModule/MergeModule.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | 3.10 7 | $guid1$ 8 | 2.0 9 | $safeprojectname$ 10 | Module 11 | 12 | 13 | bin\$(Configuration)\ 14 | obj\$(Configuration)\ 15 | Debug 16 | 17 | 18 | bin\$(Configuration)\ 19 | obj\$(Configuration)\ 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/Votive2017/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WiX v3 - Visual Studio 2017 Extension 6 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 7 | https://wixtoolset.org/ 8 | WixLogoDev15.png 9 | WixLogoDev15.png 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Votive2019/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WiX v3 - Visual Studio 2019 Extension 6 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 7 | https://wixtoolset.org/ 8 | WixLogoDev16.png 9 | WixLogoDev16.png 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/Votive2022/source.extension.vsixmanifest: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | WiX v3 - Visual Studio 2022 Extension 6 | Visual Studio integration for the WiX v3 Toolset - the most powerful set of tools available to create your Windows installation experience. 7 | https://wixtoolset.org/ 8 | WixLogoDev17.png 9 | WixLogoDev17.png 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | amd64 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixLibrary/setuplibrary.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Debug 4 | x86 5 | 3.10 6 | $guid1$ 7 | 2.0 8 | $safeprojectname$ 9 | Library 10 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 11 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 12 | 13 | 14 | bin\$(Configuration)\ 15 | obj\$(Configuration)\ 16 | Debug 17 | 18 | 19 | bin\$(Configuration)\ 20 | obj\$(Configuration)\ 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixProject/SetupProject.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Debug 4 | x86 5 | 3.10 6 | $guid1$ 7 | 2.0 8 | $safeprojectname$ 9 | Package 10 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 11 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 12 | 13 | 14 | bin\$(Configuration)\ 15 | obj\$(Configuration)\ 16 | Debug 17 | 18 | 19 | bin\$(Configuration)\ 20 | obj\$(Configuration)\ 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixMergeModule/MergeModule.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Debug 4 | x86 5 | 3.10 6 | $guid1$ 7 | 2.0 8 | $safeprojectname$ 9 | Module 10 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 11 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 12 | 13 | 14 | bin\$(Configuration)\ 15 | obj\$(Configuration)\ 16 | Debug 17 | 18 | 19 | bin\$(Configuration)\ 20 | obj\$(Configuration)\ 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 37 | 38 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixBundleProject/WixBundle.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Bootstrapper Project for WiX v3 4 | A project for creating a WiX based EXE setup layout using WiX Toolset v3 5 | WixBundle.ico 6 | 7 | 8 | 9 | 10 | 11 | WiX 12 | 50 13 | 1 14 | true 15 | Bootstrapper 16 | true 17 | false 18 | 19 | 20 | 21 | Bundle.wxs 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/ConfigurationProperties.cs: -------------------------------------------------------------------------------- 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 | using Microsoft.VisualStudio.Shell.Interop; 4 | using System; 5 | using System.Runtime.InteropServices; 6 | using Microsoft.VisualStudio.OLE.Interop; 7 | using Microsoft.VisualStudio.Shell; 8 | using System.Diagnostics; 9 | using System.Globalization; 10 | using System.Collections; 11 | using System.IO; 12 | using MSBuild = Microsoft.Build.Evaluation; 13 | using System.Collections.Generic; 14 | 15 | namespace Microsoft.VisualStudio.Package 16 | { 17 | /// 18 | /// Defines the config dependent properties exposed through automation 19 | /// 20 | [ComVisible(true)] 21 | [Guid("21f73a8f-91d7-4085-9d4f-c48ee235ee5b")] 22 | public interface IProjectConfigProperties 23 | { 24 | string OutputPath {get; set;} 25 | } 26 | 27 | /// 28 | /// Implements the configuration dependent properties interface 29 | /// 30 | [CLSCompliant(false), ComVisible(true)] 31 | [ClassInterface(ClassInterfaceType.None)] 32 | public class ProjectConfigProperties : IProjectConfigProperties 33 | { 34 | #region fields 35 | private ProjectConfig projectConfig; 36 | #endregion 37 | 38 | #region ctors 39 | public ProjectConfigProperties(ProjectConfig projectConfig) 40 | { 41 | this.projectConfig = projectConfig; 42 | } 43 | #endregion 44 | 45 | #region IProjectConfigProperties Members 46 | 47 | public virtual string OutputPath 48 | { 49 | get 50 | { 51 | return this.projectConfig.GetConfigurationProperty(BuildPropertyPageTag.OutputPath.ToString(), true); 52 | } 53 | set 54 | { 55 | this.projectConfig.SetConfigurationProperty(BuildPropertyPageTag.OutputPath.ToString(), value); 56 | } 57 | } 58 | 59 | #endregion 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/OAReferenceFolderItem.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Shell; 6 | using System.Runtime.InteropServices; 7 | using System.Collections.Generic; 8 | using System.Collections; 9 | using System.Diagnostics; 10 | using System.Runtime.Serialization; 11 | using System.Reflection; 12 | using IServiceProvider = System.IServiceProvider; 13 | using Microsoft.VisualStudio.OLE.Interop; 14 | using System.Diagnostics.CodeAnalysis; 15 | 16 | namespace Microsoft.VisualStudio.Package.Automation 17 | { 18 | /// 19 | /// Contains OAReferenceItem objects 20 | /// 21 | [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")] 22 | [ComVisible(true), CLSCompliant(false)] 23 | public class OAReferenceFolderItem : OAProjectItem 24 | { 25 | #region ctors 26 | public OAReferenceFolderItem(OAProject project, ReferenceContainerNode node) 27 | : base(project, node) 28 | { 29 | } 30 | 31 | #endregion 32 | 33 | #region overridden methods 34 | /// 35 | /// Returns the project items collection of all the references defined for this project. 36 | /// 37 | public override EnvDTE.ProjectItems ProjectItems 38 | { 39 | get 40 | { 41 | return new OANavigableProjectItems(this.Project, this.GetListOfProjectItems(), this.Node); 42 | } 43 | } 44 | 45 | 46 | #endregion 47 | 48 | #region Helper methods 49 | private List GetListOfProjectItems() 50 | { 51 | List list = new List(); 52 | for (HierarchyNode child = this.Node.FirstChild; child != null; child = child.NextSibling) 53 | { 54 | if (child is ReferenceNode) 55 | { 56 | list.Add(new OAReferenceItem(this.Project, child as ReferenceNode)); 57 | } 58 | } 59 | 60 | return list; 61 | } 62 | #endregion 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/OANestedProjectItem.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Shell; 6 | using System.Runtime.InteropServices; 7 | using System.Collections.Generic; 8 | using System.Collections; 9 | using System.Diagnostics; 10 | using System.Runtime.Serialization; 11 | using System.Reflection; 12 | using IServiceProvider = System.IServiceProvider; 13 | using Microsoft.VisualStudio.OLE.Interop; 14 | using System.Diagnostics.CodeAnalysis; 15 | 16 | namespace Microsoft.VisualStudio.Package.Automation 17 | { 18 | [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")] 19 | [ComVisible(true), CLSCompliant(false)] 20 | public class OANestedProjectItem : OAProjectItem 21 | { 22 | #region fields 23 | EnvDTE.Project nestedProject = null; 24 | #endregion 25 | 26 | #region ctors 27 | public OANestedProjectItem(OAProject project, NestedProjectNode node) 28 | : base(project, node) 29 | { 30 | object nestedproject = null; 31 | if (ErrorHandler.Succeeded(node.NestedHierarchy.GetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ExtObject, out nestedproject))) 32 | { 33 | this.nestedProject = nestedproject as EnvDTE.Project; 34 | } 35 | } 36 | 37 | #endregion 38 | 39 | #region overridden methods 40 | /// 41 | /// Returns the collection of project items defined in the nested project 42 | /// 43 | public override EnvDTE.ProjectItems ProjectItems 44 | { 45 | get 46 | { 47 | if (this.nestedProject != null) 48 | { 49 | return this.nestedProject.ProjectItems; 50 | } 51 | return null; 52 | } 53 | } 54 | 55 | /// 56 | /// Returns the nested project. 57 | /// 58 | public override EnvDTE.Project SubProject 59 | { 60 | get 61 | { 62 | return this.nestedProject; 63 | } 64 | } 65 | #endregion 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixBuildEventsPropertyPagePanel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using WixToolset.VisualStudioExtension.Forms; 6 | 7 | /// 8 | /// Property page contents for the Candle Settings page. 9 | /// 10 | internal partial class WixBuildEventsPropertyPagePanel : WixPropertyPagePanel 11 | { 12 | // ========================================================================================= 13 | // Member Variables 14 | // ========================================================================================= 15 | 16 | private WixBuildEventEditorForm editorForm = new WixBuildEventEditorForm(null); 17 | 18 | // ========================================================================================= 19 | // Constructors 20 | // ========================================================================================= 21 | 22 | /// 23 | /// Initializes a new instance of the class. 24 | /// 25 | /// The parent property page to which this is bound. 26 | public WixBuildEventsPropertyPagePanel(WixPropertyPage parentPropertyPage) 27 | : base(parentPropertyPage) 28 | { 29 | this.InitializeComponent(); 30 | 31 | // hook up the form to both editors 32 | this.preBuildEditor.Initialize(parentPropertyPage.ProjectMgr, this.editorForm); 33 | this.postBuildEditor.Initialize(parentPropertyPage.ProjectMgr, this.editorForm); 34 | 35 | this.preBuildEditor.TextBox.Tag = WixProjectFileConstants.PreBuildEvent; 36 | this.postBuildEditor.TextBox.Tag = WixProjectFileConstants.PostBuildEvent; 37 | this.runPostBuildComboBox.Tag = WixProjectFileConstants.RunPostBuildEvent; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixBundleProject/BundleProject.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | x86 6 | 3.10 7 | $guid1$ 8 | 2.0 9 | $safeprojectname$ 10 | Bundle 11 | 12 | 13 | bin\$(Configuration)\ 14 | obj\$(Configuration)\ 15 | Debug 16 | 17 | 18 | bin\$(Configuration)\ 19 | obj\$(Configuration)\ 20 | 21 | 22 | 23 | 24 | 25 | 26 | $(WixExtDir)\WixBalExtension.dll 27 | WixBalExtension 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 43 | 44 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/ProjectOptions.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using System.Collections.Specialized; 5 | using System.Diagnostics.CodeAnalysis; 6 | 7 | namespace Microsoft.VisualStudio.Package 8 | { 9 | 10 | public class ProjectOptions : System.CodeDom.Compiler.CompilerParameters 11 | { 12 | 13 | public ModuleKindFlags ModuleKind = ModuleKindFlags.ConsoleApplication; 14 | 15 | public bool EmitManifest = true; 16 | 17 | [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "PreProcessor")] 18 | public StringCollection DefinedPreProcessorSymbols; 19 | 20 | public string XMLDocFileName; 21 | 22 | public string RecursiveWildcard; 23 | 24 | public StringCollection ReferencedModules; 25 | 26 | public string Win32Icon; 27 | 28 | public bool PDBOnly; 29 | 30 | public bool Optimize; 31 | 32 | public bool IncrementalCompile; 33 | 34 | public int[] SuppressedWarnings; 35 | 36 | public bool CheckedArithmetic; 37 | 38 | public bool AllowUnsafeCode; 39 | 40 | public bool DisplayCommandLineHelp; 41 | 42 | public bool SuppressLogo; 43 | 44 | public long BaseAddress; 45 | 46 | public string BugReportFileName; 47 | 48 | /// must be an int if not null 49 | public object CodePage; 50 | 51 | public bool EncodeOutputInUTF8; 52 | 53 | [SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Qualifiy")] 54 | public bool FullyQualifiyPaths; 55 | 56 | public int FileAlignment; 57 | 58 | public bool NoStandardLibrary; 59 | 60 | public StringCollection AdditionalSearchPaths; 61 | 62 | public bool HeuristicReferenceResolution; 63 | 64 | public string RootNamespace; 65 | 66 | public bool CompileAndExecute; 67 | 68 | /// must be an int if not null. 69 | public object UserLocaleId; 70 | 71 | public PlatformType TargetPlatform; 72 | 73 | public string TargetPlatformLocation; 74 | 75 | public virtual string GetOptionHelp() 76 | { 77 | return null; 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixProject/WixProject.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Setup Project 4 | A project for creating an MSI file 5 | WixProject.ico 6 | WiX 7 | 20 8 | 1 9 | true 10 | SetupProject 11 | true 12 | false 13 | 14 | 15 | 16 | Product.wxs 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /src/votive.shared/Templates/v3/Projects/WixBundleProject/BundleProject.wixproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | Debug 4 | x86 5 | 3.10 6 | $guid1$ 7 | 2.0 8 | $safeprojectname$ 9 | Bundle 10 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix2010.targets 11 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix2010.targets 12 | 13 | 14 | bin\$(Configuration)\ 15 | obj\$(Configuration)\ 16 | Debug 17 | 18 | 19 | bin\$(Configuration)\ 20 | obj\$(Configuration)\ 21 | 22 | 23 | 24 | 25 | 26 | 27 | $(WixExtDir)\WixBalExtension.dll 28 | WixBalExtension 29 | 30 | 31 | 32 | 33 | 34 | 35 | 43 | 44 | -------------------------------------------------------------------------------- /src/votive.shared/WixNonMemberDesignPropertyDescriptor.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using Microsoft.VisualStudio.Package; 8 | 9 | /// 10 | /// Subclasses to allow for non-bolded text in the property grid. 11 | /// 12 | public class WixNonMemberDesignPropertyDescriptor : DesignPropertyDescriptor 13 | { 14 | // ========================================================================================= 15 | // Constructors 16 | // ========================================================================================= 17 | 18 | /// 19 | /// Initializes a new instance of the class. 20 | /// 21 | /// The to wrap. 22 | public WixNonMemberDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 23 | : base(propertyDescriptor) 24 | { 25 | } 26 | 27 | /// 28 | /// Properties of non-member nodes should be read-only. 29 | /// 30 | public override bool IsReadOnly 31 | { 32 | get 33 | { 34 | return true; 35 | } 36 | } 37 | 38 | // ========================================================================================= 39 | // Methods 40 | // ========================================================================================= 41 | 42 | /// 43 | /// By returning false here, we're always going to show the property as non-bolded. 44 | /// 45 | /// The component to check. 46 | /// Always returns false. 47 | public override bool ShouldSerializeValue(object component) 48 | { 49 | return false; 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/PropertiesEditorLauncher.cs: -------------------------------------------------------------------------------- 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 | using Microsoft.VisualStudio.OLE.Interop; 4 | using Microsoft.VisualStudio.Shell; 5 | using Microsoft.VisualStudio.Shell.Interop; 6 | using Microsoft.VisualStudio.Designer.Interfaces; 7 | using System; 8 | using System.Collections; 9 | using System.ComponentModel; 10 | using System.Globalization; 11 | using System.Runtime.InteropServices; 12 | using System.Diagnostics; 13 | 14 | using ErrorHandler = Microsoft.VisualStudio.ErrorHandler; 15 | 16 | namespace Microsoft.VisualStudio.Package 17 | { 18 | /// 19 | /// This class is used to enable launching the project properties 20 | /// editor from the Properties Browser. 21 | /// 22 | [CLSCompliant(false)] 23 | public class PropertiesEditorLauncher : ComponentEditor 24 | { 25 | private ServiceProvider serviceProvider; 26 | 27 | #region ctor 28 | public PropertiesEditorLauncher(ServiceProvider serviceProvider) 29 | { 30 | if (serviceProvider == null) 31 | throw new ArgumentNullException("serviceProvider"); 32 | 33 | this.serviceProvider = serviceProvider; 34 | } 35 | #endregion 36 | #region overridden methods 37 | /// 38 | /// Launch the Project Properties Editor (properties pages) 39 | /// 40 | /// If we succeeded or not 41 | public override bool EditComponent(ITypeDescriptorContext context, object component) 42 | { 43 | if (component is ProjectNodeProperties) 44 | { 45 | IVsPropertyPageFrame propertyPageFrame = (IVsPropertyPageFrame)serviceProvider.GetService((typeof(SVsPropertyPageFrame))); 46 | 47 | int hr = propertyPageFrame.ShowFrame(Guid.Empty); 48 | if (ErrorHandler.Succeeded(hr)) 49 | return true; 50 | else 51 | propertyPageFrame.ReportError(hr); 52 | } 53 | 54 | return false; 55 | } 56 | #endregion 57 | 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/votive.shared/WixLocalizedCategoryAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | 8 | /// 9 | /// Subclasses to allow for localized strings retrieved 10 | /// from the resource assembly. 11 | /// 12 | [AttributeUsage(AttributeTargets.All)] 13 | public sealed class WixLocalizedCategoryAttribute : CategoryAttribute 14 | { 15 | // ========================================================================================= 16 | // Constructors 17 | // ========================================================================================= 18 | 19 | /// 20 | /// Initializes a new instance of the class. 21 | /// 22 | /// The string identifier to get. 23 | public WixLocalizedCategoryAttribute(string categoryId) 24 | : base(categoryId) 25 | { 26 | } 27 | 28 | /// 29 | /// Gets the identifier for the category. 30 | /// 31 | /// The identifier for the category. 32 | public string CategoryId 33 | { 34 | get { return this.Category; } 35 | } 36 | 37 | // ========================================================================================= 38 | // Methods 39 | // ========================================================================================= 40 | 41 | /// 42 | /// Looks up the localized name of the specified category. 43 | /// 44 | /// The identifer for the category to look up. 45 | /// The localized name of the category, or null if a localized name does not exist. 46 | protected override string GetLocalizedString(string value) 47 | { 48 | return WixStrings.ResourceManager.GetString(value); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /src/votive.shared/FileSearchHelperMethods.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.Build.Tasks 4 | { 5 | using System; 6 | using System.IO; 7 | 8 | /// 9 | /// Contains helper methods on searching for files 10 | /// 11 | public static class FileSearchHelperMethods 12 | { 13 | /// 14 | /// Searches for the existence of a file in multiple directories. 15 | /// Search is satisfied if default file path is valid and exists. If not, 16 | /// file name is extracted from default path and combined with each of the directories 17 | /// looking to see if it exists. If not found, input default path is returned. 18 | /// 19 | /// Array of directories to look in, without filenames in them 20 | /// Default path - to use if not found 21 | /// File path if file found. Empty string if not found 22 | public static string SearchFilePaths(string[] directories, string defaultFullPath) 23 | { 24 | if (String.IsNullOrEmpty(defaultFullPath)) 25 | { 26 | return String.Empty; 27 | } 28 | 29 | if (File.Exists(defaultFullPath)) 30 | { 31 | return defaultFullPath; 32 | } 33 | 34 | if (directories == null) 35 | { 36 | return string.Empty; 37 | } 38 | 39 | string fileName = Path.GetFileName(defaultFullPath); 40 | foreach (string currentPath in directories) 41 | { 42 | if (String.IsNullOrEmpty(currentPath) || String.IsNullOrEmpty(currentPath.Trim())) 43 | { 44 | continue; 45 | } 46 | 47 | if (File.Exists(Path.Combine(currentPath, fileName))) 48 | { 49 | return Path.Combine(currentPath, fileName); 50 | } 51 | } 52 | 53 | return String.Empty; 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/votive.shared/WixLibraryReferenceNodeProperties.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.Diagnostics; 7 | using System.Runtime.InteropServices; 8 | using Microsoft.VisualStudio.Package; 9 | 10 | /// 11 | /// Represents Wixlib reference node properties. 12 | /// 13 | /// This class must be public and marked as ComVisible in order for the DispatchWrapper to work correctly. 14 | [CLSCompliant(false)] 15 | [ComVisible(true)] 16 | [Guid("C69F4413-4204-4ef1-B195-A729F85F9285")] 17 | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 18 | public class WixLibraryReferenceNodeProperties : WixReferenceNodeProperties 19 | { 20 | // ========================================================================================= 21 | // Constructors 22 | // ========================================================================================= 23 | 24 | /// 25 | /// Initializes a new instance of the class. 26 | /// 27 | /// The node that contains the properties to expose via the Property Browser. 28 | public WixLibraryReferenceNodeProperties(WixLibraryReferenceNode node) 29 | : base(node) 30 | { 31 | } 32 | 33 | // ========================================================================================= 34 | // Methods 35 | // ========================================================================================= 36 | 37 | /// 38 | /// Returns the name that is displayed in the right hand side of the Properties window drop-down combo box. 39 | /// 40 | /// The class name of the object, or null if the class does not have a name. 41 | public override string GetClassName() 42 | { 43 | return WixStrings.WixLibraryReferenceProperties; 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/votive.shared/OAWixProject.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using EnvDTE; 6 | using Microsoft.VisualStudio.Package.Automation; 7 | using Microsoft.VisualStudio.Shell.Interop; 8 | using System; 9 | using System.Runtime.InteropServices; 10 | 11 | /// 12 | /// Represents automation object corresponding to a WiX project. 13 | /// 14 | [CLSCompliant(false), ComVisible(true)] 15 | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 16 | public class OAWixProject : OAProject 17 | { 18 | // ========================================================================================= 19 | // Member variables 20 | // ========================================================================================= 21 | 22 | /// 23 | /// Properties associated with the WiX project. 24 | /// 25 | private OAProperties properties; 26 | 27 | // ========================================================================================= 28 | // Constructors 29 | // ========================================================================================= 30 | 31 | /// 32 | /// Initializes a new instance of the class. 33 | /// 34 | /// The node to which this project belongs. 35 | public OAWixProject(WixProjectNode wixProject) 36 | : base(wixProject) 37 | { 38 | if (wixProject != null) 39 | { 40 | this.properties = new OAProperties(wixProject.NodeProperties); 41 | } 42 | } 43 | 44 | /// 45 | /// Properties of the project 46 | /// 47 | /// Collection of all project properties 48 | public override EnvDTE.Properties Properties 49 | { 50 | get 51 | { 52 | return this.properties; 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/NestedProjectBuildDependency.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using System.Runtime.InteropServices; 5 | using Microsoft.VisualStudio.OLE.Interop; 6 | using Microsoft.VisualStudio.Shell; 7 | using Microsoft.VisualStudio.Shell.Interop; 8 | using System.Diagnostics; 9 | using System.Globalization; 10 | using System.Collections; 11 | using System.IO; 12 | 13 | namespace Microsoft.VisualStudio.Package 14 | { 15 | /// 16 | /// Used for adding a build dependency to nested project (not a real project reference) 17 | /// 18 | public class NestedProjectBuildDependency : IVsBuildDependency 19 | { 20 | IVsHierarchy dependentHierarchy = null; 21 | 22 | #region ctors 23 | [CLSCompliant(false)] 24 | public NestedProjectBuildDependency(IVsHierarchy dependentHierarchy) 25 | { 26 | this.dependentHierarchy = dependentHierarchy; 27 | } 28 | #endregion 29 | 30 | #region IVsBuildDependency methods 31 | public int get_CanonicalName(out string canonicalName) 32 | { 33 | canonicalName = null; 34 | return VSConstants.S_OK; 35 | } 36 | 37 | public int get_Type(out System.Guid guidType) 38 | { 39 | // All our dependencies are build projects 40 | guidType = VSConstants.GUID_VS_DEPTYPE_BUILD_PROJECT; 41 | 42 | return VSConstants.S_OK; 43 | } 44 | 45 | public int get_Description(out string description) 46 | { 47 | description = null; 48 | return VSConstants.S_OK; 49 | } 50 | 51 | [CLSCompliant(false)] 52 | public int get_HelpContext(out uint helpContext) 53 | { 54 | helpContext = 0; 55 | return VSConstants.E_NOTIMPL; 56 | } 57 | 58 | public int get_HelpFile(out string helpFile) 59 | { 60 | helpFile = null; 61 | return VSConstants.E_NOTIMPL; 62 | } 63 | 64 | public int get_MustUpdateBefore(out int mustUpdateBefore) 65 | { 66 | // Must always update dependencies 67 | mustUpdateBefore = 1; 68 | 69 | return VSConstants.S_OK; 70 | } 71 | 72 | public int get_ReferredProject(out object unknownProject) 73 | { 74 | unknownProject = this.dependentHierarchy; 75 | 76 | return (unknownProject == null) ? VSConstants.E_FAIL : VSConstants.S_OK; 77 | } 78 | #endregion 79 | 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/Templates/v3/Projects/WixProject/WixProject.vstemplate: -------------------------------------------------------------------------------- 1 | 2 | 3 | Setup Project for WiX v3 4 | A project for creating an MSI file using WiX Toolset v3 5 | WixProject.ico 6 | 7 | 8 | 9 | 10 | WiX 11 | 20 12 | 1 13 | true 14 | SetupProject 15 | true 16 | false 17 | 18 | 19 | 20 | Product.wxs 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /appveyor.yml: -------------------------------------------------------------------------------- 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 | branches: 4 | only: 5 | - master 6 | - develop 7 | 8 | image: Visual Studio 2019 9 | 10 | version: 0.0.0.{build} 11 | configuration: Release 12 | 13 | environment: 14 | DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true 15 | DOTNET_CLI_TELEMETRY_OPTOUT: 1 16 | NUGET_XMLDOC_MODE: skip 17 | 18 | install: 19 | - msbuild tools\OneTimeWixBuildInitialization.proj 20 | 21 | before_build: 22 | - nuget restore Votive.sln 23 | 24 | build: 25 | project: src\src.proj 26 | 27 | pull_requests: 28 | do_not_increment_build_number: true 29 | 30 | nuget: 31 | disable_publish_on_pr: true 32 | 33 | skip_branch_with_pr: true 34 | skip_tags: true 35 | 36 | artifacts: 37 | - path: build\Release\**\*.vsix 38 | 39 | notifications: 40 | - provider: Slack 41 | incoming_webhook: 42 | secure: p5xuu+4x2JHfwGDMDe5KcG1k7gZxqYc4jWVwvyNZv5cvkubPD2waJs5yXMAXZNN7Z63/3PWHb7q4KoY/99AjauYa1nZ4c5qYqRPFRBKTHfA= 43 | 44 | for: 45 | - 46 | branches: 47 | only: 48 | - master 49 | 50 | environment: 51 | KeyPairDownloadToken: 52 | secure: HKpHJ0SC/XYHS4dhbuPQbgyjAaU4qKYwCElomqi8fcmeREVX9IWlV4ZcGF9P+yDoc7qFdnpb0ZbQLh/Q7KIn4aM07/y8kz8HBy8UAU4CS6xLo+pgXQhpejgxh00FFfcqbA9Y3nLGAzO2zdegEHfvvwL9agHHtSSqho4tGwCXrI4OBorcopNN1KfNyxfm5oIz 53 | PleaseSignOutput: true 54 | SignClientUser: 55 | secure: s+b2kuhi/AlE8ZYFsNVHFLfgJOwi0fIKMCOP+xL++8U= 56 | SignClientSecret: 57 | secure: tlJbxYs82lHpHf8dttYr4LpKbWSAC/gKlvyDfUWKBj0= 58 | 59 | install: 60 | - ps: $env:OFFICIAL_WIX_BUILD=$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath(".\wix4_keypair.snk") 61 | - ps: Start-FileDownload -Url "https://wixdl.blob.core.windows.net/secure/keys/wix4_keypair.snk${env:KeyPairDownloadToken}" -FileName "${env:OFFICIAL_WIX_BUILD}" 62 | 63 | after_build: 64 | - ps: Remove-Item "${env:OFFICIAL_WIX_BUILD}" 65 | 66 | deploy: 67 | provider: GitHub 68 | tag: v$(GitBuildVersion) 69 | release: WiX Toolset Visual Studio Extensions v$(GitBuildVersion) 70 | description: 'WiX Toolset Visual Studio Extensions (aka: Votive) release v$(GitBuildVersion)' 71 | artifact: /.*\.vsix/ 72 | prerelease: true 73 | auth_token: 74 | secure: BuuXJ8z8dMoeeMPy4l7QbbNPFn1/CW9PRGZxMhH3IAFdtTftFKZHA7eqpBqiE2T3 75 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/BuildPropertyPage.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Package; 6 | using System.Runtime.InteropServices; 7 | using System.ComponentModel; 8 | using System.Diagnostics; 9 | using System.IO; 10 | using System.Diagnostics.CodeAnalysis; 11 | using System.Globalization; 12 | 13 | namespace Microsoft.VisualStudio.Package 14 | { 15 | /// 16 | /// Enumerated list of the properties shown on the build property page 17 | /// 18 | internal enum BuildPropertyPageTag 19 | { 20 | OutputPath 21 | } 22 | 23 | /// 24 | /// Defines the properties on the build property page and the logic the binds the properties to project data (load and save) 25 | /// 26 | [CLSCompliant(false), ComVisible(true), Guid("9B3DEA40-7F29-4a17-87A4-00EE08E8241E")] 27 | public class BuildPropertyPage : SettingsPage 28 | { 29 | #region fields 30 | private string outputPath; 31 | 32 | public BuildPropertyPage() 33 | { 34 | this.Name = SR.GetString(SR.BuildCaption, CultureInfo.CurrentUICulture); 35 | } 36 | #endregion 37 | 38 | #region properties 39 | [SRCategoryAttribute(SR.BuildCaption)] 40 | [LocDisplayName(SR.OutputPath)] 41 | [SRDescriptionAttribute(SR.OutputPathDescription)] 42 | public string OutputPath 43 | { 44 | get { return this.outputPath; } 45 | set { this.outputPath = value; this.IsDirty = true; } 46 | } 47 | #endregion 48 | 49 | #region overridden methods 50 | public override string GetClassName() 51 | { 52 | return this.GetType().FullName; 53 | } 54 | 55 | protected override void BindProperties() 56 | { 57 | if (this.ProjectMgr == null) 58 | { 59 | Debug.Assert(false); 60 | return; 61 | } 62 | 63 | this.outputPath = this.GetConfigProperty(BuildPropertyPageTag.OutputPath.ToString()); 64 | } 65 | 66 | protected override int ApplyChanges() 67 | { 68 | if (this.ProjectMgr == null) 69 | { 70 | Debug.Assert(false); 71 | return VSConstants.E_INVALIDARG; 72 | } 73 | 74 | this.SetConfigProperty(BuildPropertyPageTag.OutputPath.ToString(), this.outputPath); 75 | this.IsDirty = false; 76 | return VSConstants.S_OK; 77 | } 78 | #endregion 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/EnumDependencies.cs: -------------------------------------------------------------------------------- 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 | using Microsoft.VisualStudio.Shell.Interop; 4 | using System; 5 | using System.Collections.Generic; 6 | using System.Runtime.InteropServices; 7 | using Microsoft.VisualStudio.OLE.Interop; 8 | using Microsoft.VisualStudio.Shell; 9 | using System.Diagnostics; 10 | using System.Globalization; 11 | using System.Collections; 12 | using System.IO; 13 | 14 | namespace Microsoft.VisualStudio.Package 15 | { 16 | [CLSCompliant(false)] 17 | public class EnumDependencies : IVsEnumDependencies 18 | { 19 | private List dependencyList = new List(); 20 | 21 | private uint nextIndex = 0; 22 | 23 | public EnumDependencies(IList dependencyList) 24 | { 25 | foreach (IVsDependency dependency in dependencyList) 26 | { 27 | this.dependencyList.Add(dependency); 28 | } 29 | } 30 | 31 | public EnumDependencies(IList dependencyList) 32 | { 33 | foreach (IVsBuildDependency dependency in dependencyList) 34 | { 35 | this.dependencyList.Add(dependency); 36 | } 37 | } 38 | 39 | public int Clone(out IVsEnumDependencies enumDependencies) 40 | { 41 | enumDependencies = new EnumDependencies(this.dependencyList); 42 | enumDependencies.Skip(this.nextIndex); 43 | return VSConstants.S_OK; 44 | } 45 | 46 | public int Next(uint elements, IVsDependency[] dependencies, out uint elementsFetched) 47 | { 48 | uint fetched = 0; 49 | int count = this.dependencyList.Count; 50 | 51 | while (this.nextIndex < count && elements > 0 && fetched < count) 52 | { 53 | dependencies[fetched] = this.dependencyList[(int)this.nextIndex]; 54 | this.nextIndex++; 55 | fetched++; 56 | elements--; 57 | 58 | } 59 | 60 | elementsFetched = fetched; 61 | 62 | // Did we get 'em all? 63 | return (elements == 0 ? VSConstants.S_OK : VSConstants.S_FALSE); 64 | } 65 | 66 | public int Reset() 67 | { 68 | this.nextIndex = 0; 69 | return VSConstants.S_OK; 70 | } 71 | 72 | public int Skip(uint elements) 73 | { 74 | this.nextIndex += elements; 75 | uint count = (uint)this.dependencyList.Count; 76 | 77 | if (this.nextIndex > count) 78 | { 79 | this.nextIndex = count; 80 | return VSConstants.S_FALSE; 81 | } 82 | return VSConstants.S_OK; 83 | } 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/Tracing.cs: -------------------------------------------------------------------------------- 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 | using System.Diagnostics; 4 | 5 | namespace Microsoft.VisualStudio.Package 6 | { 7 | internal class CCITracing 8 | { 9 | private CCITracing() { } 10 | 11 | [ConditionalAttribute("Enable_CCIDiagnostics")] 12 | static void InternalTraceCall(int levels) 13 | { 14 | System.Diagnostics.StackFrame stack; 15 | stack = new System.Diagnostics.StackFrame(levels); 16 | System.Reflection.MethodBase method = stack.GetMethod(); 17 | if (method != null) 18 | { 19 | string name = method.Name + " \tin class " + method.DeclaringType.Name; 20 | System.Diagnostics.Trace.WriteLine("Call Trace: \t" + name); 21 | } 22 | } 23 | 24 | [ConditionalAttribute("CCI_TRACING")] 25 | static public void TraceCall() 26 | { 27 | // skip this one as well 28 | CCITracing.InternalTraceCall(2); 29 | } 30 | 31 | [ConditionalAttribute("CCI_TRACING")] 32 | static public void TraceCall(string strParameters) 33 | { 34 | CCITracing.InternalTraceCall(2); 35 | System.Diagnostics.Trace.WriteLine("\tParameters: \t" + strParameters); 36 | } 37 | 38 | [ConditionalAttribute("CCI_TRACING")] 39 | static public void Trace(System.Exception e) 40 | { 41 | CCITracing.InternalTraceCall(2); 42 | System.Diagnostics.Trace.WriteLine("ExceptionInfo: \t" + e.ToString()); 43 | } 44 | 45 | [ConditionalAttribute("CCI_TRACING")] 46 | static public void Trace(string strOutput) 47 | { 48 | System.Diagnostics.Trace.WriteLine(strOutput); 49 | } 50 | 51 | [ConditionalAttribute("CCI_TRACING")] 52 | static public void TraceData(string strOutput) 53 | { 54 | System.Diagnostics.Trace.WriteLine("Data Trace: \t" + strOutput); 55 | } 56 | 57 | [ConditionalAttribute("Enable_CCIFileOutput")] 58 | [ConditionalAttribute("CCI_TRACING")] 59 | static public void AddTraceLog(string strFileName) 60 | { 61 | TextWriterTraceListener tw = new TextWriterTraceListener("c:\\mytrace.log"); 62 | System.Diagnostics.Trace.Listeners.Add(tw); 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/VSShellUtilities.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using System.Diagnostics; 6 | 7 | namespace Microsoft.VisualStudio.Package 8 | { 9 | 10 | /// 11 | ///This class provides some useful static shell based methods. 12 | /// 13 | [CLSCompliant(false)] 14 | public static class UIHierarchyUtilities 15 | { 16 | /// 17 | /// Get reference to IVsUIHierarchyWindow interface from guid persistence slot. 18 | /// 19 | /// The service provider. 20 | /// Unique identifier for a tool window created using IVsUIShell::CreateToolWindow. 21 | /// The caller of this method can use predefined identifiers that map to tool windows if those tool windows 22 | /// are known to the caller. 23 | /// A reference to an IVsUIHierarchyWindow interface. 24 | public static IVsUIHierarchyWindow GetUIHierarchyWindow(IServiceProvider serviceProvider, Guid persistenceSlot) 25 | { 26 | if (serviceProvider == null) 27 | { 28 | throw new ArgumentNullException("serviceProvider"); 29 | } 30 | 31 | IVsUIShell shell = serviceProvider.GetService(typeof(SVsUIShell)) as IVsUIShell; 32 | 33 | Debug.Assert(shell != null, "Could not get the ui shell from the project"); 34 | if (shell == null) 35 | { 36 | throw new InvalidOperationException(); 37 | } 38 | 39 | object pvar = null; 40 | IVsWindowFrame frame = null; 41 | IVsUIHierarchyWindow uiHierarchyWindow = null; 42 | 43 | try 44 | { 45 | if (0 == shell.FindToolWindow(0, ref persistenceSlot, out frame)) 46 | { 47 | ErrorHandler.ThrowOnFailure(frame.GetProperty((int)__VSFPROPID.VSFPROPID_DocView, out pvar)); 48 | } 49 | } 50 | finally 51 | { 52 | if (pvar != null) 53 | { 54 | uiHierarchyWindow = (IVsUIHierarchyWindow)pvar; 55 | } 56 | } 57 | 58 | return uiHierarchyWindow; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/LangProj/OAVSProjectItem.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Shell; 6 | using Microsoft.VisualStudio.TextManager.Interop; 7 | using System.Runtime.InteropServices; 8 | using System.Collections.Generic; 9 | using System.Collections; 10 | using System.Diagnostics; 11 | using System.IO; 12 | using IServiceProvider = System.IServiceProvider; 13 | using Microsoft.VisualStudio.OLE.Interop; 14 | using Microsoft.VisualStudio.Package; 15 | using EnvDTE; 16 | using VSLangProj; 17 | using System.Diagnostics.CodeAnalysis; 18 | 19 | namespace Microsoft.VisualStudio.Package.Automation 20 | { 21 | /// 22 | /// Represents a language-specific project item 23 | /// 24 | [SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", MessageId = "OAVS")] 25 | [ComVisible(true), CLSCompliant(false)] 26 | public class OAVSProjectItem : VSProjectItem 27 | { 28 | #region fields 29 | private FileNode fileNode; 30 | #endregion 31 | 32 | #region ctors 33 | public OAVSProjectItem(FileNode fileNode) 34 | { 35 | this.FileNode = fileNode; 36 | } 37 | #endregion 38 | 39 | #region VSProjectItem Members 40 | 41 | public virtual Project ContainingProject 42 | { 43 | get { return fileNode.ProjectMgr.GetAutomationObject() as Project; } 44 | } 45 | 46 | public virtual ProjectItem ProjectItem 47 | { 48 | get { return fileNode.GetAutomationObject() as ProjectItem; } 49 | } 50 | 51 | public virtual DTE DTE 52 | { 53 | get { return (DTE)this.fileNode.ProjectMgr.Site.GetService(typeof(DTE)); } 54 | } 55 | 56 | public virtual void RunCustomTool() 57 | { 58 | this.FileNode.RunGenerator(); 59 | } 60 | 61 | #endregion 62 | 63 | #region public properties 64 | /// 65 | /// File Node property 66 | /// 67 | public FileNode FileNode 68 | { 69 | get 70 | { 71 | return fileNode; 72 | } 73 | set 74 | { 75 | fileNode = value; 76 | } 77 | } 78 | #endregion 79 | 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/votive.shared/WixLocalizedControlTextAttribute.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | 8 | /// 9 | /// Attribute to denote the localized text that should be displayed on the control for the 10 | /// property page settings. 11 | /// 12 | [AttributeUsage(AttributeTargets.Property)] 13 | public sealed class WixLocalizedControlTextAttribute : Attribute 14 | { 15 | // ========================================================================================= 16 | // Member Variables 17 | // ========================================================================================= 18 | 19 | private string id; 20 | 21 | // ========================================================================================= 22 | // Constructors 23 | // ========================================================================================= 24 | 25 | /// 26 | /// Initializes a new instance of the class. 27 | /// 28 | /// The string identifier to get. 29 | public WixLocalizedControlTextAttribute(string controlTextId) 30 | { 31 | this.id = controlTextId; 32 | } 33 | 34 | // ========================================================================================= 35 | // Properties 36 | // ========================================================================================= 37 | 38 | /// 39 | /// Gets the identifier for the associated control or control's label. 40 | /// 41 | /// The identifier for the associated control or control's label. 42 | public string ControlTextId 43 | { 44 | get { return this.id; } 45 | } 46 | 47 | /// 48 | /// Gets the text to display for the associated control or control's label. 49 | /// 50 | /// The text to display for the associated control or control's label. 51 | public string ControlText 52 | { 53 | get 54 | { 55 | return WixStrings.ResourceManager.GetString(this.id); 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/OANullProperty.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using Microsoft.VisualStudio.Shell.Interop; 5 | using Microsoft.VisualStudio.Shell; 6 | using System.Runtime.InteropServices; 7 | using System.Collections.Generic; 8 | using System.Collections; 9 | using System.Diagnostics; 10 | using System.Runtime.Serialization; 11 | using System.Reflection; 12 | using IServiceProvider = System.IServiceProvider; 13 | using Microsoft.VisualStudio.OLE.Interop; 14 | 15 | namespace Microsoft.VisualStudio.Package.Automation 16 | { 17 | /// 18 | /// This object defines a so called null object that is returned as instead of null. This is because callers in VSCore usually crash if a null propery is returned for them. 19 | /// 20 | [CLSCompliant(false), ComVisible(true)] 21 | public class OANullProperty : EnvDTE.Property 22 | { 23 | #region fields 24 | private OAProperties parent; 25 | #endregion 26 | 27 | #region ctors 28 | 29 | public OANullProperty(OAProperties parent) 30 | { 31 | this.parent = parent; 32 | } 33 | #endregion 34 | 35 | #region EnvDTE.Property 36 | 37 | public object Application 38 | { 39 | get { return String.Empty; } 40 | } 41 | 42 | public EnvDTE.Properties Collection 43 | { 44 | get 45 | { 46 | //todo: EnvDTE.Property.Collection 47 | return this.parent; 48 | } 49 | } 50 | 51 | public EnvDTE.DTE DTE 52 | { 53 | get { return null; } 54 | } 55 | 56 | public object get_IndexedValue(object index1, object index2, object index3, object index4) 57 | { 58 | return String.Empty; 59 | } 60 | 61 | public void let_Value(object value) 62 | { 63 | //todo: let_Value 64 | } 65 | 66 | public string Name 67 | { 68 | get { return String.Empty; } 69 | } 70 | 71 | public short NumIndices 72 | { 73 | get { return 0; } 74 | } 75 | 76 | public object Object 77 | { 78 | get { return this.parent.Target; } 79 | set 80 | { 81 | } 82 | } 83 | 84 | public EnvDTE.Properties Parent 85 | { 86 | get { return this.parent; } 87 | } 88 | 89 | public void set_IndexedValue(object index1, object index2, object index3, object index4, object value) 90 | { 91 | 92 | } 93 | 94 | public object Value 95 | { 96 | get { return String.Empty; } 97 | set { } 98 | } 99 | #endregion 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /src/votive.shared/WixFileNodeProperties.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using System.Diagnostics.CodeAnalysis; 8 | using System.Runtime.InteropServices; 9 | using Microsoft.VisualStudio.Package; 10 | 11 | /// 12 | /// Represents file node properties. 13 | /// 14 | /// This class must be public and marked as ComVisible in order for the DispatchWrapper to work correctly. 15 | [CLSCompliant(false)] 16 | [ComVisible(true)] 17 | [Guid("631866A5-D633-419D-8A2C-90D91C24BE7B")] 18 | [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 19 | public class WixFileNodeProperties : FileNodeProperties 20 | { 21 | // ========================================================================================= 22 | // Constructors 23 | // ========================================================================================= 24 | 25 | /// 26 | /// Initializes a new instance of the class. 27 | /// 28 | /// The node that contains the properties to expose via the Property Browser. 29 | public WixFileNodeProperties(WixFileNode node) 30 | : base(node) 31 | { 32 | } 33 | 34 | // ========================================================================================= 35 | // Methods 36 | // ========================================================================================= 37 | 38 | /// 39 | /// Creates a custom property descriptor for the node properties, which affects the behavior 40 | /// of the property grid. 41 | /// 42 | /// The to wrap. 43 | /// A custom object. 44 | [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "In the 2005 SDK, it's called p and in the 2008 SDK it's propertyDescriptor")] 45 | public override DesignPropertyDescriptor CreateDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 46 | { 47 | return new WixDesignPropertyDescriptor(propertyDescriptor); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/votive.shared/WixFolderNodeProperties.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using System.Diagnostics.CodeAnalysis; 8 | using System.Runtime.InteropServices; 9 | using Microsoft.VisualStudio.Package; 10 | 11 | /// 12 | /// Represents folder node properties. 13 | /// 14 | /// This class must be public and marked as ComVisible in order for the DispatchWrapper to work correctly. 15 | [CLSCompliant(false)] 16 | [ComVisible(true)] 17 | [Guid("C500F21B-92C7-4987-A425-1FB6B42CFBFD")] 18 | [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 19 | public class WixFolderNodeProperties : FolderNodeProperties 20 | { 21 | // ========================================================================================= 22 | // Constructors 23 | // ========================================================================================= 24 | 25 | /// 26 | /// Initializes a new instance of the class. 27 | /// 28 | /// The node that contains the properties to expose via the Property Browser. 29 | public WixFolderNodeProperties(WixFolderNode node) 30 | : base(node) 31 | { 32 | } 33 | 34 | // ========================================================================================= 35 | // Methods 36 | // ========================================================================================= 37 | 38 | /// 39 | /// Creates a custom property descriptor for the node properties, which affects the behavior 40 | /// of the property grid. 41 | /// 42 | /// The to wrap. 43 | /// A custom object. 44 | [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "In the 2005 SDK, it's called p and in the 2008 SDK it's propertyDescriptor")] 45 | public override DesignPropertyDescriptor CreateDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 46 | { 47 | return new WixDesignPropertyDescriptor(propertyDescriptor); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/votive.shared/WixLinkedFileNodeProperties.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using System.Diagnostics.CodeAnalysis; 8 | using System.Runtime.InteropServices; 9 | using Microsoft.VisualStudio.Package; 10 | 11 | /// 12 | /// Represents file node properties. 13 | /// 14 | /// This class must be public and marked as ComVisible in order for the DispatchWrapper to work correctly. 15 | [CLSCompliant(false)] 16 | [ComVisible(true)] 17 | [Guid("A8C51FF6-5E9D-40A1-A57D-667756391FFF")] 18 | [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 19 | public class WixLinkedFileNodeProperties : LinkedFileNodeProperties 20 | { 21 | // ========================================================================================= 22 | // Constructors 23 | // ========================================================================================= 24 | 25 | /// 26 | /// Initializes a new instance of the class. 27 | /// 28 | /// The node that contains the properties to expose via the Property Browser. 29 | public WixLinkedFileNodeProperties(WixFileNode node) 30 | : base(node) 31 | { 32 | } 33 | 34 | // ========================================================================================= 35 | // Methods 36 | // ========================================================================================= 37 | 38 | /// 39 | /// Creates a custom property descriptor for the node properties, which affects the behavior 40 | /// of the property grid. 41 | /// 42 | /// The to wrap. 43 | /// A custom object. 44 | [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "In the 2005 SDK, it's called p and in the 2008 SDK it's propertyDescriptor")] 45 | public override DesignPropertyDescriptor CreateDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 46 | { 47 | return new WixDesignPropertyDescriptor(propertyDescriptor); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/votive.shared/WixProjectConfig.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.Collections.Generic; 7 | using System.Diagnostics; 8 | using System.Diagnostics.CodeAnalysis; 9 | using System.Drawing; 10 | using System.Globalization; 11 | using System.IO; 12 | using System.Runtime.InteropServices; 13 | using System.Text; 14 | using Microsoft.VisualStudio; 15 | using Microsoft.VisualStudio.Package; 16 | using Microsoft.VisualStudio.Package.Automation; 17 | using Microsoft.VisualStudio.Shell; 18 | using Microsoft.VisualStudio.Shell.Interop; 19 | 20 | /// 21 | /// Allows getting and setting configuration-dependent properties for a WiX project. 22 | /// 23 | [CLSCompliant(false)] 24 | public class WixProjectConfig : ProjectConfig 25 | { 26 | internal const string X86Platform = "x86"; 27 | internal const string X64Platform = "x64"; 28 | internal const string IA64Platform = "ia64"; 29 | 30 | internal const string DebugConfiguration = "Debug"; 31 | internal const string ReleaseConfiguration = "Release"; 32 | 33 | internal const string ConfigConditionString = " '$(Configuration)' == '{0}' "; 34 | internal const string PlatformConditionString = " '$(Platform)' == '{0}' "; 35 | internal const string ConfigAndPlatformConditionString = " '$(Configuration)|$(Platform)' == '{0}|{1}' "; 36 | 37 | /// 38 | /// Creates a new project config instance. 39 | /// 40 | /// Parent project node. 41 | /// Configuration name such as "Debug". 42 | /// Platform name such as "x86". 43 | public WixProjectConfig(WixProjectNode project, string configName, string platformName) 44 | : base(project, new ConfigCanonicalName(configName, platformName)) 45 | { 46 | } 47 | 48 | /// 49 | /// Gets the conditional expression for the PropertyGroup corresponding to the project config. 50 | /// 51 | public override string Condition 52 | { 53 | get 54 | { 55 | return String.Format(CultureInfo.InvariantCulture, WixProjectConfig.ConfigAndPlatformConditionString, this.ConfigCanonicalName.ConfigName, this.ConfigCanonicalName.MSBuildPlatform); 56 | } 57 | } 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/votive.shared/WixFolderNodeNonMemberProperties.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension 4 | { 5 | using System; 6 | using System.ComponentModel; 7 | using System.Diagnostics.CodeAnalysis; 8 | using System.Runtime.InteropServices; 9 | using Microsoft.VisualStudio.Package; 10 | 11 | /// 12 | /// Represents folder node properties. 13 | /// 14 | /// This class must be public and marked as ComVisible in order for the DispatchWrapper to work correctly. 15 | [CLSCompliant(false)] 16 | [ComVisible(true)] 17 | [Guid("CCD1095F-96A4-4D78-AB8C-CAFF7C7731AC")] 18 | [SuppressMessage("Microsoft.Interoperability", "CA1409:ComVisibleTypesShouldBeCreatable")] 19 | public class WixFolderNodeNonMemberProperties : FolderNodeProperties 20 | { 21 | // ========================================================================================= 22 | // Constructors 23 | // ========================================================================================= 24 | 25 | /// 26 | /// Initializes a new instance of the class. 27 | /// 28 | /// The node that contains the properties to expose via the Property Browser. 29 | public WixFolderNodeNonMemberProperties(WixFolderNode node) 30 | : base(node) 31 | { 32 | } 33 | 34 | // ========================================================================================= 35 | // Methods 36 | // ========================================================================================= 37 | 38 | /// 39 | /// Creates a custom property descriptor for the node properties, which affects the behavior 40 | /// of the property grid. 41 | /// 42 | /// The to wrap. 43 | /// A custom object. 44 | [SuppressMessage("Microsoft.Naming", "CA1725:ParameterNamesShouldMatchBaseDeclaration", MessageId = "0#", Justification = "In the 2005 SDK, it's called p and in the 2008 SDK it's propertyDescriptor")] 45 | public override DesignPropertyDescriptor CreateDesignPropertyDescriptor(PropertyDescriptor propertyDescriptor) 46 | { 47 | return new WixNonMemberDesignPropertyDescriptor(propertyDescriptor); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tools/WixBuild.csproj.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9.0.21022 9 | 2.0 10 | Debug 11 | AnyCPU 12 | false 13 | true 14 | $(OverrideCheckForOverflowUnderflow) 15 | prompt 16 | 4096 17 | false 18 | false 19 | true 20 | 4 21 | $(DefineConstants);TRACE 22 | v4.0 23 | 15.0 24 | $(NoWarn);2008 25 | 26 | 27 | 28 | $(IntermediateOutputPath)$(AssemblyName).xml 29 | 30 | 31 | 32 | $(DefineConstants);DEBUG;TRACE 33 | 34 | 35 | 36 | $(DefineConstants);TRACE 37 | 38 | 39 | 40 | WixDistribution.cs 41 | 42 | 43 | 44 | 45 | Properties\$(DistCS) 46 | true 47 | false 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /src/votive.shared/PropertyPages/WixToolsSettingsPropertyPagePanel.cs: -------------------------------------------------------------------------------- 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. 2 | 3 | namespace WixToolset.VisualStudioExtension.PropertyPages 4 | { 5 | using System; 6 | using System.Collections.Generic; 7 | using System.ComponentModel; 8 | using System.Drawing; 9 | using System.Text; 10 | using System.Windows.Forms; 11 | 12 | /// 13 | /// Property page contents for the Tools Settings page 14 | /// 15 | internal partial class WixToolsSettingsPropertyPagePanel : WixPropertyPagePanel 16 | { 17 | /// 18 | /// Initializes a new instance of the WixToolSettingsPropertyPagePanel class. 19 | /// 20 | /// The parent property page to which this is bound 21 | public WixToolsSettingsPropertyPagePanel(WixPropertyPage parentPropertyPage) 22 | : base(parentPropertyPage) 23 | { 24 | this.InitializeComponent(); 25 | 26 | this.suppressIceCheckbox.Tag = WixProjectFileConstants.SuppressValidation; 27 | this.specificIceTextBox.Tag = WixProjectFileConstants.SuppressIces; 28 | this.compilerTextBox.Tag = WixProjectFileConstants.CompilerAdditionalOptions; 29 | this.linkerTextBox.Tag = WixProjectFileConstants.LinkerAdditionalOptions; 30 | this.librarianTextBox.Tag = WixProjectFileConstants.LibAdditionalOptions; 31 | 32 | this.suppressIceCheckbox.CheckStateChanged += delegate 33 | { 34 | this.specificIceTextBox.Enabled = (this.suppressIceCheckbox.CheckState != CheckState.Checked); 35 | }; 36 | } 37 | 38 | /// 39 | /// Binds the properties from the MSBuild project file to the controls on the property page. 40 | /// 41 | protected internal override void BindProperties() 42 | { 43 | base.BindProperties(); 44 | 45 | WixOutputType projectType = this.ParentPropertyPage.ProjectMgr.OutputType; 46 | this.linkerLibrarianLabel.Text = (projectType == WixOutputType.Library ? WixStrings.Librarian : WixStrings.Linker); 47 | this.linkerTextBox.Visible = (projectType != WixOutputType.Library); 48 | this.librarianTextBox.Visible = (projectType == WixOutputType.Library); 49 | this.suppressIceCheckbox.Enabled = (projectType != WixOutputType.Library && projectType != WixOutputType.Bundle); 50 | this.specificIceTextBox.Enabled = (projectType != WixOutputType.Library && projectType != WixOutputType.Bundle); 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/votive.shared/ProjectBase/LangProj/OAComReference.cs: -------------------------------------------------------------------------------- 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 | using System; 4 | using System.Globalization; 5 | using System.Runtime.InteropServices; 6 | 7 | using Microsoft.VisualStudio.Package; 8 | using VSLangProj; 9 | using System.Diagnostics.CodeAnalysis; 10 | 11 | namespace Microsoft.VisualStudio.Package.Automation 12 | { 13 | [SuppressMessage("Microsoft.Interoperability", "CA1405:ComVisibleTypeBaseTypesShouldBeComVisible")] 14 | [CLSCompliant(false), ComVisible(true)] 15 | public class OAComReference : OAReferenceBase 16 | { 17 | public OAComReference(ComReferenceNode comReference) : 18 | base(comReference) 19 | { 20 | } 21 | 22 | #region Reference override 23 | public override string Culture 24 | { 25 | get 26 | { 27 | int locale = 0; 28 | try 29 | { 30 | locale = int.Parse(BaseReferenceNode.LCID, CultureInfo.InvariantCulture); 31 | } 32 | catch (System.FormatException) 33 | { 34 | // Do Nothing 35 | } 36 | if (0 == locale) 37 | { 38 | return string.Empty; 39 | } 40 | CultureInfo culture = new CultureInfo(locale); 41 | return culture.Name; 42 | } 43 | } 44 | public override string Identity 45 | { 46 | get 47 | { 48 | return String.Format(CultureInfo.InvariantCulture, "{0}\\{1}", BaseReferenceNode.TypeGuid.ToString("B"), this.Version); 49 | } 50 | } 51 | public override int MajorVersion 52 | { 53 | get { return BaseReferenceNode.MajorVersionNumber; } 54 | } 55 | public override int MinorVersion 56 | { 57 | get { return BaseReferenceNode.MinorVersionNumber; } 58 | } 59 | public override string Name 60 | { 61 | get { return BaseReferenceNode.Caption; } 62 | } 63 | public override VSLangProj.prjReferenceType Type 64 | { 65 | get 66 | { 67 | return VSLangProj.prjReferenceType.prjReferenceTypeActiveX; 68 | } 69 | } 70 | public override string Version 71 | { 72 | get 73 | { 74 | Version version = new Version(BaseReferenceNode.MajorVersionNumber, BaseReferenceNode.MinorVersionNumber); 75 | return version.ToString(); 76 | } 77 | } 78 | #endregion 79 | } 80 | } 81 | --------------------------------------------------------------------------------