├── .gitattributes ├── .github └── FUNDING.yml ├── .gitignore ├── Images ├── desktop-application │ ├── Installer-BuiltMSI.png │ ├── Installer-DotNetVersion.png │ ├── Installer-IsWiX.png │ ├── Installer-IsWiXFFAfter.png │ ├── Installer-IsWiXFFBefore.png │ ├── Installer-IsWiXShortCuts.png │ ├── Installer-IsWiXShortCutsComponentPicker.png │ ├── Installer-IsWiXShortCutsCreateShortCut.png │ ├── Installer-IsWiXShortCutsDesktopFolder.png │ ├── Installer-IsWiXShortCutsProperties.png │ ├── Installer-LaunchIsWiX.png │ ├── Installer-MergeModuleAfter.png │ ├── Installer-MergeModuleBefore.png │ ├── Installer-NewProject.png │ ├── Installer-ProjectStructure.png │ ├── Installer-VSReload.png │ ├── WPF-InstallerModel.png │ ├── WPF-NewProject.png │ └── WPF-PostbuildCopy.png ├── web-api │ ├── appproject1.png │ ├── appproject2.png │ ├── appproject3.png │ ├── apppublish1.png │ ├── apppublish2.png │ ├── apppublish3.png │ ├── apppublish4.png │ ├── apppublish5.png │ ├── apppublish6.png │ ├── installer1.png │ ├── installer2.png │ ├── installer3a.png │ ├── installer3b.png │ ├── installer4a.png │ ├── installer4b.png │ ├── installer5.png │ ├── installer6.png │ ├── installer7.png │ ├── installer8.png │ └── installer9.png ├── web-application │ ├── Installer-BuiltMSI.png │ ├── Installer-DotNetVersion.png │ ├── Installer-Features.png │ ├── Installer-IISMeta.png │ ├── Installer-IsWiX.png │ ├── Installer-IsWiXFFAfter.png │ ├── Installer-IsWiXFFBefore.png │ ├── Installer-LaunchIsWiX.png │ ├── Installer-MergeModuleBefore.png │ ├── Installer-NewProject.png │ ├── Installer-ProjectStructure.png │ ├── Installer-VSReload.png │ ├── Installer-XMLChanges.png │ ├── Web-NewProject.png │ ├── Web-NewProject2.png │ ├── Web-Publish.png │ ├── Web-Publish2.png │ ├── Web-Publish3.png │ ├── Web-Publish4.png │ └── Web-Publish5.png └── windows-service │ ├── Installer-BuiltMSI.png │ ├── Installer-DotNetVersions.png │ ├── Installer-IsWiX.png │ ├── Installer-IsWiXFFAfter.png │ ├── Installer-IsWiXFFBefore.png │ ├── Installer-IsWiXServiceAddNew.png │ ├── Installer-IsWiXServiceBefore.png │ ├── Installer-IsWiXServicePickComponent.png │ ├── Installer-IsWiXServiceProperties.png │ ├── Installer-LaunchIsWiX.png │ ├── Installer-MergeModuleAfter.png │ ├── Installer-MergeModuleBefore.png │ ├── Installer-ProjectType.png │ ├── Installer-ReloadVS.png │ ├── Installer-Solution.png │ ├── Service-InstallerModel.png │ ├── Service-Postbuild.png │ └── Service-ProjectType.png ├── README.md ├── WiX-v3-Votive ├── README.md ├── desktop-application │ ├── Application │ │ ├── Application.sln │ │ └── DesktopApplication │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── DesktopApplication.csproj │ │ │ ├── MainWindow.xaml │ │ │ ├── MainWindow.xaml.cs │ │ │ └── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ ├── Installer │ │ ├── DesktopApplication │ │ │ ├── Code │ │ │ │ ├── Features.wxs │ │ │ │ ├── IISMeta.wxs │ │ │ │ ├── Product.wxs │ │ │ │ ├── UI-CustomDialog.wxs │ │ │ │ └── UI.wxs │ │ │ ├── DesktopApplication.wixproj │ │ │ └── Resources │ │ │ │ ├── Banner.jpg │ │ │ │ ├── Dialog.jpg │ │ │ │ ├── EULA.rtf │ │ │ │ └── Icon.ico │ │ ├── DesktopApplicationMM │ │ │ ├── DesktopApplicationMM.wixproj │ │ │ ├── DesktopApplicationMM.wxs │ │ │ └── DesktopApplicationMMcustom.wxs │ │ └── Installer.sln │ └── README.md ├── web-application │ ├── Application │ │ ├── Application.sln │ │ └── WebApp │ │ │ ├── App_Start │ │ │ ├── BundleConfig.cs │ │ │ ├── FilterConfig.cs │ │ │ ├── IdentityConfig.cs │ │ │ ├── RouteConfig.cs │ │ │ ├── Startup.Auth.cs │ │ │ └── WebApiConfig.cs │ │ │ ├── Areas │ │ │ └── HelpPage │ │ │ │ ├── ApiDescriptionExtensions.cs │ │ │ │ ├── App_Start │ │ │ │ └── HelpPageConfig.cs │ │ │ │ ├── Controllers │ │ │ │ └── HelpController.cs │ │ │ │ ├── HelpPage.css │ │ │ │ ├── HelpPageAreaRegistration.cs │ │ │ │ ├── HelpPageConfigurationExtensions.cs │ │ │ │ ├── ModelDescriptions │ │ │ │ ├── CollectionModelDescription.cs │ │ │ │ ├── ComplexTypeModelDescription.cs │ │ │ │ ├── DictionaryModelDescription.cs │ │ │ │ ├── EnumTypeModelDescription.cs │ │ │ │ ├── EnumValueDescription.cs │ │ │ │ ├── IModelDocumentationProvider.cs │ │ │ │ ├── KeyValuePairModelDescription.cs │ │ │ │ ├── ModelDescription.cs │ │ │ │ ├── ModelDescriptionGenerator.cs │ │ │ │ ├── ModelNameAttribute.cs │ │ │ │ ├── ModelNameHelper.cs │ │ │ │ ├── ParameterAnnotation.cs │ │ │ │ ├── ParameterDescription.cs │ │ │ │ └── SimpleTypeModelDescription.cs │ │ │ │ ├── Models │ │ │ │ └── HelpPageApiModel.cs │ │ │ │ ├── SampleGeneration │ │ │ │ ├── HelpPageSampleGenerator.cs │ │ │ │ ├── HelpPageSampleKey.cs │ │ │ │ ├── ImageSample.cs │ │ │ │ ├── InvalidSample.cs │ │ │ │ ├── ObjectGenerator.cs │ │ │ │ ├── SampleDirection.cs │ │ │ │ └── TextSample.cs │ │ │ │ ├── Views │ │ │ │ ├── Help │ │ │ │ │ ├── Api.cshtml │ │ │ │ │ ├── DisplayTemplates │ │ │ │ │ │ ├── ApiGroup.cshtml │ │ │ │ │ │ ├── CollectionModelDescription.cshtml │ │ │ │ │ │ ├── ComplexTypeModelDescription.cshtml │ │ │ │ │ │ ├── DictionaryModelDescription.cshtml │ │ │ │ │ │ ├── EnumTypeModelDescription.cshtml │ │ │ │ │ │ ├── HelpPageApiModel.cshtml │ │ │ │ │ │ ├── ImageSample.cshtml │ │ │ │ │ │ ├── InvalidSample.cshtml │ │ │ │ │ │ ├── KeyValuePairModelDescription.cshtml │ │ │ │ │ │ ├── ModelDescriptionLink.cshtml │ │ │ │ │ │ ├── Parameters.cshtml │ │ │ │ │ │ ├── Samples.cshtml │ │ │ │ │ │ ├── SimpleTypeModelDescription.cshtml │ │ │ │ │ │ └── TextSample.cshtml │ │ │ │ │ ├── Index.cshtml │ │ │ │ │ └── ResourceModel.cshtml │ │ │ │ ├── Shared │ │ │ │ │ └── _Layout.cshtml │ │ │ │ ├── Web.config │ │ │ │ └── _ViewStart.cshtml │ │ │ │ └── XmlDocumentationProvider.cs │ │ │ ├── Content │ │ │ ├── Site.css │ │ │ ├── bootstrap.css │ │ │ └── bootstrap.min.css │ │ │ ├── Controllers │ │ │ ├── AccountController.cs │ │ │ ├── HomeController.cs │ │ │ ├── ManageController.cs │ │ │ └── MeController.cs │ │ │ ├── Global.asax │ │ │ ├── Global.asax.cs │ │ │ ├── Models │ │ │ ├── AccountViewModels.cs │ │ │ ├── IdentityModels.cs │ │ │ ├── ManageViewModels.cs │ │ │ └── MeViewModels.cs │ │ │ ├── Project_Readme.html │ │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── PublishProfiles │ │ │ │ └── Deploy.pubxml │ │ │ ├── Providers │ │ │ └── ApplicationOAuthProvider.cs │ │ │ ├── Results │ │ │ └── ChallengeResult.cs │ │ │ ├── Scripts │ │ │ ├── _references.js │ │ │ ├── app │ │ │ │ ├── _run.js │ │ │ │ ├── app.datamodel.js │ │ │ │ ├── app.viewmodel.js │ │ │ │ ├── common.js │ │ │ │ └── home.viewmodel.js │ │ │ ├── bootstrap.js │ │ │ ├── bootstrap.min.js │ │ │ ├── jquery-1.10.2.intellisense.js │ │ │ ├── jquery-1.10.2.js │ │ │ ├── jquery-1.10.2.min.js │ │ │ ├── jquery-1.10.2.min.map │ │ │ ├── knockout-2.3.0.debug.js │ │ │ ├── knockout-2.3.0.js │ │ │ ├── knockout.validation.debug.js │ │ │ ├── knockout.validation.js │ │ │ ├── modernizr-2.6.2.js │ │ │ ├── respond.js │ │ │ ├── respond.min.js │ │ │ ├── sammy-0.7.4.js │ │ │ └── sammy-0.7.4.min.js │ │ │ ├── Startup.cs │ │ │ ├── Views │ │ │ ├── Account │ │ │ │ ├── ConfirmEmail.cshtml │ │ │ │ ├── ExternalLoginConfirmation.cshtml │ │ │ │ ├── ExternalLoginFailure.cshtml │ │ │ │ ├── ForgotPassword.cshtml │ │ │ │ ├── ForgotPasswordConfirmation.cshtml │ │ │ │ ├── Login.cshtml │ │ │ │ ├── Register.cshtml │ │ │ │ ├── ResetPassword.cshtml │ │ │ │ ├── ResetPasswordConfirmation.cshtml │ │ │ │ ├── SendCode.cshtml │ │ │ │ ├── VerifyCode.cshtml │ │ │ │ └── _ExternalLoginsListPartial.cshtml │ │ │ ├── Home │ │ │ │ ├── Index.cshtml │ │ │ │ └── _Home.cshtml │ │ │ ├── Manage │ │ │ │ ├── AddPhoneNumber.cshtml │ │ │ │ ├── ChangePassword.cshtml │ │ │ │ ├── Index.cshtml │ │ │ │ ├── ManageLogins.cshtml │ │ │ │ ├── SetPassword.cshtml │ │ │ │ └── VerifyPhoneNumber.cshtml │ │ │ ├── Shared │ │ │ │ ├── Error.cshtml │ │ │ │ ├── Lockout.cshtml │ │ │ │ ├── _Layout.cshtml │ │ │ │ └── _LoginPartial.cshtml │ │ │ ├── Web.config │ │ │ └── _ViewStart.cshtml │ │ │ ├── Web.Debug.config │ │ │ ├── Web.Release.config │ │ │ ├── Web.config │ │ │ ├── WebApp.csproj │ │ │ ├── favicon.ico │ │ │ ├── fonts │ │ │ ├── glyphicons-halflings-regular.eot │ │ │ ├── glyphicons-halflings-regular.svg │ │ │ ├── glyphicons-halflings-regular.ttf │ │ │ └── glyphicons-halflings-regular.woff │ │ │ └── packages.config │ ├── Installer │ │ ├── Installer.sln │ │ ├── WebApp │ │ │ ├── Code │ │ │ │ ├── Features.wxs │ │ │ │ ├── IISMeta.wxs │ │ │ │ ├── Product.wxs │ │ │ │ ├── UI-CustomDialog.wxs │ │ │ │ └── UI.wxs │ │ │ ├── Resources │ │ │ │ ├── Banner.jpg │ │ │ │ ├── Dialog.jpg │ │ │ │ ├── EULA.rtf │ │ │ │ └── Icon.ico │ │ │ └── WebApp.wixproj │ │ └── WebAppMM │ │ │ ├── WebAppMM.wixproj │ │ │ ├── WebAppMM.wxs │ │ │ └── WebAppMMcustom.wxs │ └── README.md └── windows-service │ ├── Application │ ├── Application.sln │ └── WindowsService │ │ ├── Program.cs │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── Service1.Designer.cs │ │ ├── Service1.cs │ │ └── WindowsService.csproj │ ├── Installer │ ├── Installer.sln │ ├── WindowsService │ │ ├── Code │ │ │ ├── Features.wxs │ │ │ ├── IISMeta.wxs │ │ │ ├── Product.wxs │ │ │ ├── UI-CustomDialog.wxs │ │ │ └── UI.wxs │ │ ├── Resources │ │ │ ├── Banner.jpg │ │ │ ├── Dialog.jpg │ │ │ ├── EULA.rtf │ │ │ └── Icon.ico │ │ └── WindowsService.wixproj │ └── WindowsServiceMM │ │ ├── WindowsServiceMM.wixproj │ │ ├── WindowsServiceMM.wxs │ │ └── WindowsServiceMMcustom.wxs │ └── README.md ├── WiX-v4-HeatWave ├── README.md └── web-api │ ├── Application │ ├── Api │ │ ├── .config │ │ │ └── dotnet-tools.json │ │ ├── Api.csproj │ │ ├── Controllers │ │ │ └── WeatherForecastController.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── PublishProfiles │ │ │ │ └── FolderProfile.pubxml │ │ │ └── launchSettings.json │ │ ├── WeatherForecast.cs │ │ ├── appsettings.Development.json │ │ └── appsettings.json │ └── Application.sln │ ├── Installer │ ├── Installer.sln │ └── WebAPI │ │ ├── IISMeta.wxs │ │ ├── Product.wxs │ │ ├── Resources │ │ ├── Banner.jpg │ │ ├── Dialog.jpg │ │ ├── EULA.rtf │ │ └── Icon.ico │ │ ├── UI-CustomDialog.wxs │ │ ├── UI.wxs │ │ ├── WebAPI.wixproj │ │ └── WebAPIFiles.wxs │ └── README.md └── WiX-v4-HeatWaveBuildTools └── desktop-application ├── Application ├── Application.sln └── DesktopApplication │ ├── App.xaml │ ├── App.xaml.cs │ ├── AssemblyInfo.cs │ ├── DesktopApplication.csproj │ ├── MainWindow.xaml │ ├── MainWindow.xaml.cs │ └── Properties │ └── PublishProfiles │ └── FolderProfile.pubxml └── Installer ├── DesktopApplication ├── DesktopApplication.wixproj ├── DesktopApplicationFiles.wxs ├── IISMeta.wxs ├── Product.wxs ├── Resources │ ├── Banner.jpg │ ├── Dialog.jpg │ ├── EULA.rtf │ └── Icon.ico ├── UI-CustomDialog.wxs └── UI.wxs └── Installer.sln /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: iswix-llc 2 | -------------------------------------------------------------------------------- /Images/desktop-application/Installer-BuiltMSI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-BuiltMSI.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-DotNetVersion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-DotNetVersion.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiX.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXFFAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXFFAfter.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXFFBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXFFBefore.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXShortCuts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXShortCuts.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXShortCutsComponentPicker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXShortCutsComponentPicker.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXShortCutsCreateShortCut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXShortCutsCreateShortCut.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXShortCutsDesktopFolder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXShortCutsDesktopFolder.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-IsWiXShortCutsProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-IsWiXShortCutsProperties.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-LaunchIsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-LaunchIsWiX.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-MergeModuleAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-MergeModuleAfter.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-MergeModuleBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-MergeModuleBefore.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-NewProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-NewProject.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-ProjectStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-ProjectStructure.png -------------------------------------------------------------------------------- /Images/desktop-application/Installer-VSReload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/Installer-VSReload.png -------------------------------------------------------------------------------- /Images/desktop-application/WPF-InstallerModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/WPF-InstallerModel.png -------------------------------------------------------------------------------- /Images/desktop-application/WPF-NewProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/WPF-NewProject.png -------------------------------------------------------------------------------- /Images/desktop-application/WPF-PostbuildCopy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/desktop-application/WPF-PostbuildCopy.png -------------------------------------------------------------------------------- /Images/web-api/appproject1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/appproject1.png -------------------------------------------------------------------------------- /Images/web-api/appproject2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/appproject2.png -------------------------------------------------------------------------------- /Images/web-api/appproject3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/appproject3.png -------------------------------------------------------------------------------- /Images/web-api/apppublish1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish1.png -------------------------------------------------------------------------------- /Images/web-api/apppublish2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish2.png -------------------------------------------------------------------------------- /Images/web-api/apppublish3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish3.png -------------------------------------------------------------------------------- /Images/web-api/apppublish4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish4.png -------------------------------------------------------------------------------- /Images/web-api/apppublish5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish5.png -------------------------------------------------------------------------------- /Images/web-api/apppublish6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/apppublish6.png -------------------------------------------------------------------------------- /Images/web-api/installer1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer1.png -------------------------------------------------------------------------------- /Images/web-api/installer2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer2.png -------------------------------------------------------------------------------- /Images/web-api/installer3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer3a.png -------------------------------------------------------------------------------- /Images/web-api/installer3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer3b.png -------------------------------------------------------------------------------- /Images/web-api/installer4a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer4a.png -------------------------------------------------------------------------------- /Images/web-api/installer4b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer4b.png -------------------------------------------------------------------------------- /Images/web-api/installer5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer5.png -------------------------------------------------------------------------------- /Images/web-api/installer6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer6.png -------------------------------------------------------------------------------- /Images/web-api/installer7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer7.png -------------------------------------------------------------------------------- /Images/web-api/installer8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer8.png -------------------------------------------------------------------------------- /Images/web-api/installer9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-api/installer9.png -------------------------------------------------------------------------------- /Images/web-application/Installer-BuiltMSI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-BuiltMSI.png -------------------------------------------------------------------------------- /Images/web-application/Installer-DotNetVersion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-DotNetVersion.png -------------------------------------------------------------------------------- /Images/web-application/Installer-Features.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-Features.png -------------------------------------------------------------------------------- /Images/web-application/Installer-IISMeta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-IISMeta.png -------------------------------------------------------------------------------- /Images/web-application/Installer-IsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-IsWiX.png -------------------------------------------------------------------------------- /Images/web-application/Installer-IsWiXFFAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-IsWiXFFAfter.png -------------------------------------------------------------------------------- /Images/web-application/Installer-IsWiXFFBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-IsWiXFFBefore.png -------------------------------------------------------------------------------- /Images/web-application/Installer-LaunchIsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-LaunchIsWiX.png -------------------------------------------------------------------------------- /Images/web-application/Installer-MergeModuleBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-MergeModuleBefore.png -------------------------------------------------------------------------------- /Images/web-application/Installer-NewProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-NewProject.png -------------------------------------------------------------------------------- /Images/web-application/Installer-ProjectStructure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-ProjectStructure.png -------------------------------------------------------------------------------- /Images/web-application/Installer-VSReload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-VSReload.png -------------------------------------------------------------------------------- /Images/web-application/Installer-XMLChanges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Installer-XMLChanges.png -------------------------------------------------------------------------------- /Images/web-application/Web-NewProject.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-NewProject.png -------------------------------------------------------------------------------- /Images/web-application/Web-NewProject2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-NewProject2.png -------------------------------------------------------------------------------- /Images/web-application/Web-Publish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-Publish.png -------------------------------------------------------------------------------- /Images/web-application/Web-Publish2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-Publish2.png -------------------------------------------------------------------------------- /Images/web-application/Web-Publish3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-Publish3.png -------------------------------------------------------------------------------- /Images/web-application/Web-Publish4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-Publish4.png -------------------------------------------------------------------------------- /Images/web-application/Web-Publish5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/web-application/Web-Publish5.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-BuiltMSI.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-BuiltMSI.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-DotNetVersions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-DotNetVersions.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiX.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXFFAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXFFAfter.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXFFBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXFFBefore.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXServiceAddNew.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXServiceAddNew.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXServiceBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXServiceBefore.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXServicePickComponent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXServicePickComponent.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-IsWiXServiceProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-IsWiXServiceProperties.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-LaunchIsWiX.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-LaunchIsWiX.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-MergeModuleAfter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-MergeModuleAfter.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-MergeModuleBefore.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-MergeModuleBefore.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-ProjectType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-ProjectType.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-ReloadVS.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-ReloadVS.png -------------------------------------------------------------------------------- /Images/windows-service/Installer-Solution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Installer-Solution.png -------------------------------------------------------------------------------- /Images/windows-service/Service-InstallerModel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Service-InstallerModel.png -------------------------------------------------------------------------------- /Images/windows-service/Service-Postbuild.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Service-Postbuild.png -------------------------------------------------------------------------------- /Images/windows-service/Service-ProjectType.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/Images/windows-service/Service-ProjectType.png -------------------------------------------------------------------------------- /WiX-v3-Votive/README.md: -------------------------------------------------------------------------------- 1 | 2 | ## Samples 3 | 4 | [Desktop Application](https://github.com/iswix-llc/iswix-tutorials/tree/master/WiX-v3-Votive/desktop-application) A simple WPF application with a shortcut on the desktop. Implemented in .NET Framework 4.0 and WiX v3.11. (Votive) 5 | 6 | [Web Application](https://github.com/iswix-llc/iswix-tutorials/tree/master/WiX-v3-Votive/web-application) A basic ASP.NET website installed on IIS. Implemented in .NET Framework 4.5 and WiX v3.11. (Votive) 7 | 8 | [Windows Service](https://github.com/iswix-llc/iswix-tutorials/tree/master/WiX-v3-Votive/windows-service) A basic Windows Service that installs and starts without using InstallUtil. Implemented in .NET Framework 4.0 and WiX v3.11. (Votive) 9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesktopApplication", "DesktopApplication\DesktopApplication.csproj", "{272635DA-85E7-469C-9707-D26A0538EE94}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {272635DA-85E7-469C-9707-D26A0538EE94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {272635DA-85E7-469C-9707-D26A0538EE94}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {272635DA-85E7-469C-9707-D26A0538EE94}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {272635DA-85E7-469C-9707-D26A0538EE94}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Configuration; 4 | using System.Data; 5 | using System.Linq; 6 | using System.Windows; 7 | 8 | namespace DesktopApplication 9 | { 10 | /// 11 | /// Interaction logic for App.xaml 12 | /// 13 | public partial class App : Application 14 | { 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Windows; 6 | using System.Windows.Controls; 7 | using System.Windows.Data; 8 | using System.Windows.Documents; 9 | using System.Windows.Input; 10 | using System.Windows.Media; 11 | using System.Windows.Media.Imaging; 12 | using System.Windows.Navigation; 13 | using System.Windows.Shapes; 14 | 15 | namespace DesktopApplication 16 | { 17 | /// 18 | /// Interaction logic for MainWindow.xaml 19 | /// 20 | public partial class MainWindow : Window 21 | { 22 | public MainWindow() 23 | { 24 | InitializeComponent(); 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | using System.Windows; 6 | 7 | // General Information about an assembly is controlled through the following 8 | // set of attributes. Change these attribute values to modify the information 9 | // associated with an assembly. 10 | [assembly: AssemblyTitle("DesktopApplication")] 11 | [assembly: AssemblyDescription("")] 12 | [assembly: AssemblyConfiguration("")] 13 | [assembly: AssemblyCompany("")] 14 | [assembly: AssemblyProduct("DesktopApplication")] 15 | [assembly: AssemblyCopyright("Copyright © 2017")] 16 | [assembly: AssemblyTrademark("")] 17 | [assembly: AssemblyCulture("")] 18 | 19 | // Setting ComVisible to false makes the types in this assembly not visible 20 | // to COM components. If you need to access a type in this assembly from 21 | // COM, set the ComVisible attribute to true on that type. 22 | [assembly: ComVisible(false)] 23 | 24 | //In order to begin building localizable applications, set 25 | //CultureYouAreCodingWith in your .csproj file 26 | //inside a . For example, if you are using US english 27 | //in your source files, set the to en-US. Then uncomment 28 | //the NeutralResourceLanguage attribute below. Update the "en-US" in 29 | //the line below to match the UICulture setting in the project file. 30 | 31 | //[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] 32 | 33 | 34 | [assembly: ThemeInfo( 35 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 36 | //(used if a resource is not found in the page, 37 | // or application resource dictionaries) 38 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 39 | //(used if a resource is not found in the page, 40 | // app, or any theme specific resource dictionaries) 41 | )] 42 | 43 | 44 | // Version information for an assembly consists of the following four values: 45 | // 46 | // Major Version 47 | // Minor Version 48 | // Build Number 49 | // Revision 50 | // 51 | // You can specify all the values or you can default the Build and Revision Numbers 52 | // by using the '*' as shown below: 53 | // [assembly: AssemblyVersion("1.0.*")] 54 | [assembly: AssemblyVersion("1.0.0.0")] 55 | [assembly: AssemblyFileVersion("1.0.0.0")] 56 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DesktopApplication.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DesktopApplication.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace DesktopApplication.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Application/DesktopApplication/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Code/Features.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Code/IISMeta.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Installed OR NETFRAMEWORK45 15 | Installed OR IISMAJORVERSION 16 | Installed OR ASPNETINSTALLED="#1" 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Code/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Installed OR NETFRAMEWORK40FULL 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Code/UI.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Banner.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Dialog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Dialog.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/EULA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Riched20 6.2.9200}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\f0\fs20 TODO: Place EULA Text Here. \par 4 | \par 5 | Special Note:\par 6 | \par 7 | The Windows Installer ScrollableText control is very old and is limited in the Rich Text that it can render. It is recommended to use the oldest version of Wordpad that you have to create this file and to test the installer on all of your platforms to ensure the EULA is readable.\par 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/desktop-application/Installer/DesktopApplication/Resources/Icon.ico -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplicationMM/DesktopApplicationMM.wixproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 3.7 7 | {07fe66a1-3474-44bd-96d0-f176634a2402} 8 | 2.0 9 | DesktopApplicationMM 10 | Module 11 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 12 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 13 | 14 | 15 | bin\$(Configuration)\ 16 | obj\$(Configuration)\ 17 | Debug 18 | 19 | 20 | bin\$(Configuration)\ 21 | obj\$(Configuration)\ 22 | 23 | 24 | 25 | 26 | 27 | 28 | 36 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplicationMM/DesktopApplicationMM.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/DesktopApplicationMM/DesktopApplicationMMcustom.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /WiX-v3-Votive/desktop-application/Installer/Installer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "DesktopApplicationMM", "DesktopApplicationMM\DesktopApplicationMM.wixproj", "{07FE66A1-3474-44BD-96D0-F176634A2402}" 7 | EndProject 8 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "DesktopApplication", "DesktopApplication\DesktopApplication.wixproj", "{A61768CD-6A25-451E-A54F-E85AEC07A8D5}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x86 = Debug|x86 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {07FE66A1-3474-44BD-96D0-F176634A2402}.Debug|x86.ActiveCfg = Debug|x86 17 | {07FE66A1-3474-44BD-96D0-F176634A2402}.Debug|x86.Build.0 = Debug|x86 18 | {07FE66A1-3474-44BD-96D0-F176634A2402}.Release|x86.ActiveCfg = Release|x86 19 | {07FE66A1-3474-44BD-96D0-F176634A2402}.Release|x86.Build.0 = Release|x86 20 | {A61768CD-6A25-451E-A54F-E85AEC07A8D5}.Debug|x86.ActiveCfg = Debug|x86 21 | {A61768CD-6A25-451E-A54F-E85AEC07A8D5}.Debug|x86.Build.0 = Debug|x86 22 | {A61768CD-6A25-451E-A54F-E85AEC07A8D5}.Release|x86.ActiveCfg = Release|x86 23 | {A61768CD-6A25-451E-A54F-E85AEC07A8D5}.Release|x86.Build.0 = Release|x86 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebApp", "WebApp\WebApp.csproj", "{12497A88-C699-441A-898F-D4BDD7D3AA45}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {12497A88-C699-441A-898F-D4BDD7D3AA45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {12497A88-C699-441A-898F-D4BDD7D3AA45}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {12497A88-C699-441A-898F-D4BDD7D3AA45}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {12497A88-C699-441A-898F-D4BDD7D3AA45}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/App_Start/BundleConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web.Optimization; 5 | 6 | namespace WebApp 7 | { 8 | public class BundleConfig 9 | { 10 | // For more information on bundling, visit http://go.microsoft.com/fwlink/?LinkId=301862 11 | public static void RegisterBundles(BundleCollection bundles) 12 | { 13 | bundles.Add(new ScriptBundle("~/bundles/jquery").Include( 14 | "~/Scripts/jquery-{version}.js")); 15 | 16 | bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( 17 | "~/Scripts/jquery.unobtrusive*", 18 | "~/Scripts/jquery.validate*")); 19 | 20 | bundles.Add(new ScriptBundle("~/bundles/knockout").Include( 21 | "~/Scripts/knockout-{version}.js", 22 | "~/Scripts/knockout.validation.js")); 23 | 24 | bundles.Add(new ScriptBundle("~/bundles/app").Include( 25 | "~/Scripts/sammy-{version}.js", 26 | "~/Scripts/app/common.js", 27 | "~/Scripts/app/app.datamodel.js", 28 | "~/Scripts/app/app.viewmodel.js", 29 | "~/Scripts/app/home.viewmodel.js", 30 | "~/Scripts/app/_run.js")); 31 | 32 | // Use the development version of Modernizr to develop with and learn from. Then, when you're 33 | // ready for production, use the build tool at http://modernizr.com to pick only the tests you need. 34 | bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( 35 | "~/Scripts/modernizr-*")); 36 | 37 | bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( 38 | "~/Scripts/bootstrap.js", 39 | "~/Scripts/respond.js")); 40 | 41 | bundles.Add(new StyleBundle("~/Content/css").Include( 42 | "~/Content/bootstrap.css", 43 | "~/Content/Site.css")); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/App_Start/FilterConfig.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Mvc; 3 | 4 | namespace WebApp 5 | { 6 | public class FilterConfig 7 | { 8 | public static void RegisterGlobalFilters(GlobalFilterCollection filters) 9 | { 10 | filters.Add(new HandleErrorAttribute()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/App_Start/RouteConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | using System.Web.Mvc; 6 | using System.Web.Routing; 7 | 8 | namespace WebApp 9 | { 10 | public class RouteConfig 11 | { 12 | public static void RegisterRoutes(RouteCollection routes) 13 | { 14 | routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 15 | 16 | routes.MapRoute( 17 | name: "Default", 18 | url: "{controller}/{action}/{id}", 19 | defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 20 | ); 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/App_Start/WebApiConfig.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net.Http; 5 | using System.Web.Http; 6 | using Microsoft.Owin.Security.OAuth; 7 | using Newtonsoft.Json.Serialization; 8 | 9 | namespace WebApp 10 | { 11 | public static class WebApiConfig 12 | { 13 | public static void Register(HttpConfiguration config) 14 | { 15 | // Web API configuration and services 16 | // Configure Web API to use only bearer token authentication. 17 | config.SuppressDefaultHostAuthentication(); 18 | config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType)); 19 | 20 | // Use camel case for JSON data. 21 | config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 22 | 23 | // Web API routes 24 | config.MapHttpAttributeRoutes(); 25 | 26 | config.Routes.MapHttpRoute( 27 | name: "DefaultApi", 28 | routeTemplate: "api/{controller}/{id}", 29 | defaults: new { id = RouteParameter.Optional } 30 | ); 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ApiDescriptionExtensions.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | using System.Web; 4 | using System.Web.Http.Description; 5 | 6 | namespace WebApp.Areas.HelpPage 7 | { 8 | public static class ApiDescriptionExtensions 9 | { 10 | /// 11 | /// Generates an URI-friendly ID for the . E.g. "Get-Values-id_name" instead of "GetValues/{id}?name={name}" 12 | /// 13 | /// The . 14 | /// The ID as a string. 15 | public static string GetFriendlyId(this ApiDescription description) 16 | { 17 | string path = description.RelativePath; 18 | string[] urlParts = path.Split('?'); 19 | string localPath = urlParts[0]; 20 | string queryKeyString = null; 21 | if (urlParts.Length > 1) 22 | { 23 | string query = urlParts[1]; 24 | string[] queryKeys = HttpUtility.ParseQueryString(query).AllKeys; 25 | queryKeyString = String.Join("_", queryKeys); 26 | } 27 | 28 | StringBuilder friendlyPath = new StringBuilder(); 29 | friendlyPath.AppendFormat("{0}-{1}", 30 | description.HttpMethod.Method, 31 | localPath.Replace("/", "-").Replace("{", String.Empty).Replace("}", String.Empty)); 32 | if (queryKeyString != null) 33 | { 34 | friendlyPath.AppendFormat("_{0}", queryKeyString.Replace('.', '-')); 35 | } 36 | return friendlyPath.ToString(); 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Controllers/HelpController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Web.Http; 3 | using System.Web.Mvc; 4 | using WebApp.Areas.HelpPage.ModelDescriptions; 5 | using WebApp.Areas.HelpPage.Models; 6 | 7 | namespace WebApp.Areas.HelpPage.Controllers 8 | { 9 | /// 10 | /// The controller that will handle requests for the help page. 11 | /// 12 | public class HelpController : Controller 13 | { 14 | private const string ErrorViewName = "Error"; 15 | 16 | public HelpController() 17 | : this(GlobalConfiguration.Configuration) 18 | { 19 | } 20 | 21 | public HelpController(HttpConfiguration config) 22 | { 23 | Configuration = config; 24 | } 25 | 26 | public HttpConfiguration Configuration { get; private set; } 27 | 28 | public ActionResult Index() 29 | { 30 | ViewBag.DocumentationProvider = Configuration.Services.GetDocumentationProvider(); 31 | return View(Configuration.Services.GetApiExplorer().ApiDescriptions); 32 | } 33 | 34 | public ActionResult Api(string apiId) 35 | { 36 | if (!String.IsNullOrEmpty(apiId)) 37 | { 38 | HelpPageApiModel apiModel = Configuration.GetHelpPageApiModel(apiId); 39 | if (apiModel != null) 40 | { 41 | return View(apiModel); 42 | } 43 | } 44 | 45 | return View(ErrorViewName); 46 | } 47 | 48 | public ActionResult ResourceModel(string modelName) 49 | { 50 | if (!String.IsNullOrEmpty(modelName)) 51 | { 52 | ModelDescriptionGenerator modelDescriptionGenerator = Configuration.GetModelDescriptionGenerator(); 53 | ModelDescription modelDescription; 54 | if (modelDescriptionGenerator.GeneratedModels.TryGetValue(modelName, out modelDescription)) 55 | { 56 | return View(modelDescription); 57 | } 58 | } 59 | 60 | return View(ErrorViewName); 61 | } 62 | } 63 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/HelpPage.css: -------------------------------------------------------------------------------- 1 | .help-page h1, 2 | .help-page .h1, 3 | .help-page h2, 4 | .help-page .h2, 5 | .help-page h3, 6 | .help-page .h3, 7 | #body.help-page, 8 | .help-page-table th, 9 | .help-page-table pre, 10 | .help-page-table p { 11 | font-family: "Segoe UI Light", Frutiger, "Frutiger Linotype", "Dejavu Sans", "Helvetica Neue", Arial, sans-serif; 12 | } 13 | 14 | .help-page pre.wrapped { 15 | white-space: -moz-pre-wrap; 16 | white-space: -pre-wrap; 17 | white-space: -o-pre-wrap; 18 | white-space: pre-wrap; 19 | } 20 | 21 | .help-page .warning-message-container { 22 | margin-top: 20px; 23 | padding: 0 10px; 24 | color: #525252; 25 | background: #EFDCA9; 26 | border: 1px solid #CCCCCC; 27 | } 28 | 29 | .help-page-table { 30 | width: 100%; 31 | border-collapse: collapse; 32 | text-align: left; 33 | margin: 0px 0px 20px 0px; 34 | border-top: 1px solid #D4D4D4; 35 | } 36 | 37 | .help-page-table th { 38 | text-align: left; 39 | font-weight: bold; 40 | border-bottom: 1px solid #D4D4D4; 41 | padding: 5px 6px 5px 6px; 42 | } 43 | 44 | .help-page-table td { 45 | border-bottom: 1px solid #D4D4D4; 46 | padding: 10px 8px 10px 8px; 47 | vertical-align: top; 48 | } 49 | 50 | .help-page-table pre, 51 | .help-page-table p { 52 | margin: 0px; 53 | padding: 0px; 54 | font-family: inherit; 55 | font-size: 100%; 56 | } 57 | 58 | .help-page-table tbody tr:hover td { 59 | background-color: #F3F3F3; 60 | } 61 | 62 | .help-page a:hover { 63 | background-color: transparent; 64 | } 65 | 66 | .help-page .sample-header { 67 | border: 2px solid #D4D4D4; 68 | background: #00497E; 69 | color: #FFFFFF; 70 | padding: 8px 15px; 71 | border-bottom: none; 72 | display: inline-block; 73 | margin: 10px 0px 0px 0px; 74 | } 75 | 76 | .help-page .sample-content { 77 | display: block; 78 | border-width: 0; 79 | padding: 15px 20px; 80 | background: #FFFFFF; 81 | border: 2px solid #D4D4D4; 82 | margin: 0px 0px 10px 0px; 83 | } 84 | 85 | .help-page .api-name { 86 | width: 40%; 87 | } 88 | 89 | .help-page .api-documentation { 90 | width: 60%; 91 | } 92 | 93 | .help-page .parameter-name { 94 | width: 20%; 95 | } 96 | 97 | .help-page .parameter-documentation { 98 | width: 40%; 99 | } 100 | 101 | .help-page .parameter-type { 102 | width: 20%; 103 | } 104 | 105 | .help-page .parameter-annotations { 106 | width: 20%; 107 | } 108 | 109 | .help-page h1, 110 | .help-page .h1 { 111 | font-size: 36px; 112 | line-height: normal; 113 | } 114 | 115 | .help-page h2, 116 | .help-page .h2 { 117 | font-size: 24px; 118 | } 119 | 120 | .help-page h3, 121 | .help-page .h3 { 122 | font-size: 20px; 123 | } 124 | 125 | #body.help-page { 126 | font-size: 14px; 127 | line-height: 143%; 128 | color: #333; 129 | } 130 | 131 | .help-page a { 132 | color: #0000EE; 133 | text-decoration: none; 134 | } 135 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/HelpPageAreaRegistration.cs: -------------------------------------------------------------------------------- 1 | using System.Web.Http; 2 | using System.Web.Mvc; 3 | 4 | namespace WebApp.Areas.HelpPage 5 | { 6 | public class HelpPageAreaRegistration : AreaRegistration 7 | { 8 | public override string AreaName 9 | { 10 | get 11 | { 12 | return "HelpPage"; 13 | } 14 | } 15 | 16 | public override void RegisterArea(AreaRegistrationContext context) 17 | { 18 | context.MapRoute( 19 | "HelpPage_Default", 20 | "Help/{action}/{apiId}", 21 | new { controller = "Help", action = "Index", apiId = UrlParameter.Optional }); 22 | 23 | HelpPageConfig.Register(GlobalConfiguration.Configuration); 24 | } 25 | } 26 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/CollectionModelDescription.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage.ModelDescriptions 2 | { 3 | public class CollectionModelDescription : ModelDescription 4 | { 5 | public ModelDescription ElementDescription { get; set; } 6 | } 7 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ComplexTypeModelDescription.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.ObjectModel; 2 | 3 | namespace WebApp.Areas.HelpPage.ModelDescriptions 4 | { 5 | public class ComplexTypeModelDescription : ModelDescription 6 | { 7 | public ComplexTypeModelDescription() 8 | { 9 | Properties = new Collection(); 10 | } 11 | 12 | public Collection Properties { get; private set; } 13 | } 14 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/DictionaryModelDescription.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage.ModelDescriptions 2 | { 3 | public class DictionaryModelDescription : KeyValuePairModelDescription 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/EnumTypeModelDescription.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | 4 | namespace WebApp.Areas.HelpPage.ModelDescriptions 5 | { 6 | public class EnumTypeModelDescription : ModelDescription 7 | { 8 | public EnumTypeModelDescription() 9 | { 10 | Values = new Collection(); 11 | } 12 | 13 | public Collection Values { get; private set; } 14 | } 15 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/EnumValueDescription.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage.ModelDescriptions 2 | { 3 | public class EnumValueDescription 4 | { 5 | public string Documentation { get; set; } 6 | 7 | public string Name { get; set; } 8 | 9 | public string Value { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/IModelDocumentationProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Reflection; 3 | 4 | namespace WebApp.Areas.HelpPage.ModelDescriptions 5 | { 6 | public interface IModelDocumentationProvider 7 | { 8 | string GetDocumentation(MemberInfo member); 9 | 10 | string GetDocumentation(Type type); 11 | } 12 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/KeyValuePairModelDescription.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage.ModelDescriptions 2 | { 3 | public class KeyValuePairModelDescription : ModelDescription 4 | { 5 | public ModelDescription KeyModelDescription { get; set; } 6 | 7 | public ModelDescription ValueModelDescription { get; set; } 8 | } 9 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ModelDescription.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage.ModelDescriptions 4 | { 5 | /// 6 | /// Describes a type model. 7 | /// 8 | public abstract class ModelDescription 9 | { 10 | public string Documentation { get; set; } 11 | 12 | public Type ModelType { get; set; } 13 | 14 | public string Name { get; set; } 15 | } 16 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ModelNameAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage.ModelDescriptions 4 | { 5 | /// 6 | /// Use this attribute to change the name of the generated for a type. 7 | /// 8 | [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum, AllowMultiple = false, Inherited = false)] 9 | public sealed class ModelNameAttribute : Attribute 10 | { 11 | public ModelNameAttribute(string name) 12 | { 13 | Name = name; 14 | } 15 | 16 | public string Name { get; private set; } 17 | } 18 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ModelNameHelper.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Globalization; 3 | using System.Linq; 4 | using System.Reflection; 5 | 6 | namespace WebApp.Areas.HelpPage.ModelDescriptions 7 | { 8 | internal static class ModelNameHelper 9 | { 10 | // Modify this to provide custom model name mapping. 11 | public static string GetModelName(Type type) 12 | { 13 | ModelNameAttribute modelNameAttribute = type.GetCustomAttribute(); 14 | if (modelNameAttribute != null && !String.IsNullOrEmpty(modelNameAttribute.Name)) 15 | { 16 | return modelNameAttribute.Name; 17 | } 18 | 19 | string modelName = type.Name; 20 | if (type.IsGenericType) 21 | { 22 | // Format the generic type name to something like: GenericOfAgurment1AndArgument2 23 | Type genericType = type.GetGenericTypeDefinition(); 24 | Type[] genericArguments = type.GetGenericArguments(); 25 | string genericTypeName = genericType.Name; 26 | 27 | // Trim the generic parameter counts from the name 28 | genericTypeName = genericTypeName.Substring(0, genericTypeName.IndexOf('`')); 29 | string[] argumentTypeNames = genericArguments.Select(t => GetModelName(t)).ToArray(); 30 | modelName = String.Format(CultureInfo.InvariantCulture, "{0}Of{1}", genericTypeName, String.Join("And", argumentTypeNames)); 31 | } 32 | 33 | return modelName; 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ParameterAnnotation.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage.ModelDescriptions 4 | { 5 | public class ParameterAnnotation 6 | { 7 | public Attribute AnnotationAttribute { get; set; } 8 | 9 | public string Documentation { get; set; } 10 | } 11 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/ParameterDescription.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.Collections.ObjectModel; 3 | 4 | namespace WebApp.Areas.HelpPage.ModelDescriptions 5 | { 6 | public class ParameterDescription 7 | { 8 | public ParameterDescription() 9 | { 10 | Annotations = new Collection(); 11 | } 12 | 13 | public Collection Annotations { get; private set; } 14 | 15 | public string Documentation { get; set; } 16 | 17 | public string Name { get; set; } 18 | 19 | public ModelDescription TypeDescription { get; set; } 20 | } 21 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/ModelDescriptions/SimpleTypeModelDescription.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage.ModelDescriptions 2 | { 3 | public class SimpleTypeModelDescription : ModelDescription 4 | { 5 | } 6 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/SampleGeneration/ImageSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents an image sample on the help page. There's a display template named ImageSample associated with this class. 7 | /// 8 | public class ImageSample 9 | { 10 | /// 11 | /// Initializes a new instance of the class. 12 | /// 13 | /// The URL of an image. 14 | public ImageSample(string src) 15 | { 16 | if (src == null) 17 | { 18 | throw new ArgumentNullException("src"); 19 | } 20 | Src = src; 21 | } 22 | 23 | public string Src { get; private set; } 24 | 25 | public override bool Equals(object obj) 26 | { 27 | ImageSample other = obj as ImageSample; 28 | return other != null && Src == other.Src; 29 | } 30 | 31 | public override int GetHashCode() 32 | { 33 | return Src.GetHashCode(); 34 | } 35 | 36 | public override string ToString() 37 | { 38 | return Src; 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/SampleGeneration/InvalidSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents an invalid sample on the help page. There's a display template named InvalidSample associated with this class. 7 | /// 8 | public class InvalidSample 9 | { 10 | public InvalidSample(string errorMessage) 11 | { 12 | if (errorMessage == null) 13 | { 14 | throw new ArgumentNullException("errorMessage"); 15 | } 16 | ErrorMessage = errorMessage; 17 | } 18 | 19 | public string ErrorMessage { get; private set; } 20 | 21 | public override bool Equals(object obj) 22 | { 23 | InvalidSample other = obj as InvalidSample; 24 | return other != null && ErrorMessage == other.ErrorMessage; 25 | } 26 | 27 | public override int GetHashCode() 28 | { 29 | return ErrorMessage.GetHashCode(); 30 | } 31 | 32 | public override string ToString() 33 | { 34 | return ErrorMessage; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/SampleGeneration/SampleDirection.cs: -------------------------------------------------------------------------------- 1 | namespace WebApp.Areas.HelpPage 2 | { 3 | /// 4 | /// Indicates whether the sample is used for request or response 5 | /// 6 | public enum SampleDirection 7 | { 8 | Request = 0, 9 | Response 10 | } 11 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/SampleGeneration/TextSample.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WebApp.Areas.HelpPage 4 | { 5 | /// 6 | /// This represents a preformatted text sample on the help page. There's a display template named TextSample associated with this class. 7 | /// 8 | public class TextSample 9 | { 10 | public TextSample(string text) 11 | { 12 | if (text == null) 13 | { 14 | throw new ArgumentNullException("text"); 15 | } 16 | Text = text; 17 | } 18 | 19 | public string Text { get; private set; } 20 | 21 | public override bool Equals(object obj) 22 | { 23 | TextSample other = obj as TextSample; 24 | return other != null && Text == other.Text; 25 | } 26 | 27 | public override int GetHashCode() 28 | { 29 | return Text.GetHashCode(); 30 | } 31 | 32 | public override string ToString() 33 | { 34 | return Text; 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/Api.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using WebApp.Areas.HelpPage.Models 3 | @model HelpPageApiModel 4 | 5 | @{ 6 | var description = Model.ApiDescription; 7 | ViewBag.Title = description.HttpMethod.Method + " " + description.RelativePath; 8 | } 9 | 10 | 11 |
12 | 19 |
20 | @Html.DisplayForModel() 21 |
22 |
23 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using System.Web.Http.Controllers 3 | @using System.Web.Http.Description 4 | @using WebApp.Areas.HelpPage 5 | @using WebApp.Areas.HelpPage.Models 6 | @model IGrouping 7 | 8 | @{ 9 | var controllerDocumentation = ViewBag.DocumentationProvider != null ? 10 | ViewBag.DocumentationProvider.GetDocumentation(Model.Key) : 11 | null; 12 | } 13 | 14 |

@Model.Key.ControllerName

15 | @if (!String.IsNullOrEmpty(controllerDocumentation)) 16 | { 17 |

@controllerDocumentation

18 | } 19 | 20 | 21 | 22 | 23 | 24 | @foreach (var api in Model) 25 | { 26 | 27 | 28 | 38 | 39 | } 40 | 41 |
APIDescription
@api.HttpMethod.Method @api.RelativePath 29 | @if (api.Documentation != null) 30 | { 31 |

@api.Documentation

32 | } 33 | else 34 | { 35 |

No documentation available.

36 | } 37 |
-------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/CollectionModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model CollectionModelDescription 3 | @if (Model.ElementDescription is ComplexTypeModelDescription) 4 | { 5 | @Html.DisplayFor(m => m.ElementDescription) 6 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/ComplexTypeModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model ComplexTypeModelDescription 3 | @Html.DisplayFor(m => m.Properties, "Parameters") -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/DictionaryModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model DictionaryModelDescription 3 | Dictionary of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key] 4 | and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value] -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/EnumTypeModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model EnumTypeModelDescription 3 | 4 |

Possible enumeration values:

5 | 6 | 7 | 8 | 9 | 10 | 11 | @foreach (EnumValueDescription value in Model.Values) 12 | { 13 | 14 | 15 | 18 | 21 | 22 | } 23 | 24 |
NameValueDescription
@value.Name 16 |

@value.Value

17 |
19 |

@value.Documentation

20 |
-------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/HelpPageApiModel.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using System.Web.Http.Description 3 | @using WebApp.Areas.HelpPage.Models 4 | @using WebApp.Areas.HelpPage.ModelDescriptions 5 | @model HelpPageApiModel 6 | 7 | @{ 8 | ApiDescription description = Model.ApiDescription; 9 | } 10 |

@description.HttpMethod.Method @description.RelativePath

11 |
12 |

@description.Documentation

13 | 14 |

Request Information

15 | 16 |

URI Parameters

17 | @Html.DisplayFor(m => m.UriParameters, "Parameters") 18 | 19 |

Body Parameters

20 | 21 |

@Model.RequestDocumentation

22 | 23 | @if (Model.RequestModelDescription != null) 24 | { 25 | @Html.DisplayFor(m => m.RequestModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.RequestModelDescription }) 26 | if (Model.RequestBodyParameters != null) 27 | { 28 | @Html.DisplayFor(m => m.RequestBodyParameters, "Parameters") 29 | } 30 | } 31 | else 32 | { 33 |

None.

34 | } 35 | 36 | @if (Model.SampleRequests.Count > 0) 37 | { 38 |

Request Formats

39 | @Html.DisplayFor(m => m.SampleRequests, "Samples") 40 | } 41 | 42 |

Response Information

43 | 44 |

Resource Description

45 | 46 |

@description.ResponseDescription.Documentation

47 | 48 | @if (Model.ResourceDescription != null) 49 | { 50 | @Html.DisplayFor(m => m.ResourceDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ResourceDescription }) 51 | if (Model.ResourceProperties != null) 52 | { 53 | @Html.DisplayFor(m => m.ResourceProperties, "Parameters") 54 | } 55 | } 56 | else 57 | { 58 |

None.

59 | } 60 | 61 | @if (Model.SampleResponses.Count > 0) 62 | { 63 |

Response Formats

64 | @Html.DisplayFor(m => m.SampleResponses, "Samples") 65 | } 66 | 67 |
-------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/ImageSample.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage 2 | @model ImageSample 3 | 4 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/InvalidSample.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage 2 | @model InvalidSample 3 | 4 | @if (HttpContext.Current.IsDebuggingEnabled) 5 | { 6 |
7 |

@Model.ErrorMessage

8 |
9 | } 10 | else 11 | { 12 |

Sample not available.

13 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/KeyValuePairModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model KeyValuePairModelDescription 3 | Pair of @Html.DisplayFor(m => Model.KeyModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.KeyModelDescription }) [key] 4 | and @Html.DisplayFor(m => Model.ValueModelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = Model.ValueModelDescription }) [value] -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/ModelDescriptionLink.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model Type 3 | @{ 4 | ModelDescription modelDescription = ViewBag.modelDescription; 5 | if (modelDescription is ComplexTypeModelDescription || modelDescription is EnumTypeModelDescription) 6 | { 7 | if (Model == typeof(Object)) 8 | { 9 | @:Object 10 | } 11 | else 12 | { 13 | @Html.ActionLink(modelDescription.Name, "ResourceModel", "Help", new { modelName = modelDescription.Name }, null) 14 | } 15 | } 16 | else if (modelDescription is CollectionModelDescription) 17 | { 18 | var collectionDescription = modelDescription as CollectionModelDescription; 19 | var elementDescription = collectionDescription.ElementDescription; 20 | @:Collection of @Html.DisplayFor(m => elementDescription.ModelType, "ModelDescriptionLink", new { modelDescription = elementDescription }) 21 | } 22 | else 23 | { 24 | @Html.DisplayFor(m => modelDescription) 25 | } 26 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/Parameters.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Collections.Generic 2 | @using System.Collections.ObjectModel 3 | @using System.Web.Http.Description 4 | @using System.Threading 5 | @using WebApp.Areas.HelpPage.ModelDescriptions 6 | @model IList 7 | 8 | @if (Model.Count > 0) 9 | { 10 | 11 | 12 | 13 | 14 | 15 | @foreach (ParameterDescription parameter in Model) 16 | { 17 | ModelDescription modelDescription = parameter.TypeDescription; 18 | 19 | 20 | 23 | 26 | 39 | 40 | } 41 | 42 |
NameDescriptionTypeAdditional information
@parameter.Name 21 |

@parameter.Documentation

22 |
24 | @Html.DisplayFor(m => modelDescription.ModelType, "ModelDescriptionLink", new { modelDescription = modelDescription }) 25 | 27 | @if (parameter.Annotations.Count > 0) 28 | { 29 | foreach (var annotation in parameter.Annotations) 30 | { 31 |

@annotation.Documentation

32 | } 33 | } 34 | else 35 | { 36 |

None.

37 | } 38 |
43 | } 44 | else 45 | { 46 |

None.

47 | } 48 | 49 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/Samples.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Net.Http.Headers 2 | @model Dictionary 3 | 4 | @{ 5 | // Group the samples into a single tab if they are the same. 6 | Dictionary samples = Model.GroupBy(pair => pair.Value).ToDictionary( 7 | pair => String.Join(", ", pair.Select(m => m.Key.ToString()).ToArray()), 8 | pair => pair.Key); 9 | var mediaTypes = samples.Keys; 10 | } 11 |
12 | @foreach (var mediaType in mediaTypes) 13 | { 14 |

@mediaType

15 |
16 | Sample: 17 | @{ 18 | var sample = samples[mediaType]; 19 | if (sample == null) 20 | { 21 |

Sample not available.

22 | } 23 | else 24 | { 25 | @Html.DisplayFor(s => sample); 26 | } 27 | } 28 |
29 | } 30 |
-------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/SimpleTypeModelDescription.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage.ModelDescriptions 2 | @model SimpleTypeModelDescription 3 | @Model.Documentation -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/DisplayTemplates/TextSample.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Areas.HelpPage 2 | @model TextSample 3 | 4 |
5 | @Model.Text
6 | 
-------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/Index.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using System.Web.Http.Controllers 3 | @using System.Web.Http.Description 4 | @using System.Collections.ObjectModel 5 | @using WebApp.Areas.HelpPage.Models 6 | @model Collection 7 | 8 | @{ 9 | ViewBag.Title = "ASP.NET Web API Help Page"; 10 | 11 | // Group APIs by controller 12 | ILookup apiGroups = Model.ToLookup(api => api.ActionDescriptor.ControllerDescriptor); 13 | } 14 | 15 | 16 |
17 |
18 |
19 |

@ViewBag.Title

20 |
21 |
22 |
23 |
24 | 32 |
33 | @foreach (var group in apiGroups) 34 | { 35 | @Html.DisplayFor(m => group, "ApiGroup") 36 | } 37 |
38 |
39 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Help/ResourceModel.cshtml: -------------------------------------------------------------------------------- 1 | @using System.Web.Http 2 | @using WebApp.Areas.HelpPage.ModelDescriptions 3 | @model ModelDescription 4 | 5 | 6 |
7 | 14 |

@Model.Name

15 |

@Model.Documentation

16 |
17 | @Html.DisplayFor(m => Model) 18 |
19 |
20 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | @ViewBag.Title 7 | @RenderSection("scripts", required: false) 8 | 9 | 10 | @RenderBody() 11 | 12 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/Web.config: -------------------------------------------------------------------------------- 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 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Areas/HelpPage/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | // Change the Layout path below to blend the look and feel of the help page with your existing web pages 3 | Layout = "~/Views/Shared/_Layout.cshtml"; 4 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Content/Site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | /* Set padding to keep content from hitting the edges */ 7 | .body-content { 8 | padding-left: 15px; 9 | padding-right: 15px; 10 | } 11 | 12 | /* Override the default bootstrap behavior where horizontal description lists 13 | will truncate terms that are too long to fit in the left column 14 | */ 15 | .dl-horizontal dt { 16 | white-space: normal; 17 | } 18 | 19 | /* Set width on the form input elements since they're 100% wide by default */ 20 | input, 21 | select, 22 | textarea { 23 | max-width: 280px; 24 | } 25 | 26 | /* Set padding to display errors that occur during databinding */ 27 | .padding-error { 28 | padding-top: 20px; 29 | } 30 | 31 | @media only screen and (max-width: 767px) { 32 | .nofloat { 33 | float: none; 34 | padding: 10px 15px; 35 | } 36 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web.Mvc; 5 | 6 | namespace WebApp.Controllers 7 | { 8 | [Authorize] 9 | public class HomeController : Controller 10 | { 11 | public ActionResult Index() 12 | { 13 | return View(); 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Controllers/MeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Security.Claims; 5 | using System.Threading.Tasks; 6 | using System.Web; 7 | using System.Web.Http; 8 | using Microsoft.AspNet.Identity; 9 | using Microsoft.AspNet.Identity.EntityFramework; 10 | using Microsoft.AspNet.Identity.Owin; 11 | using Microsoft.Owin.Security; 12 | using Owin; 13 | using WebApp.Models; 14 | 15 | namespace WebApp.Controllers 16 | { 17 | [Authorize] 18 | public class MeController : ApiController 19 | { 20 | private ApplicationUserManager _userManager; 21 | 22 | public MeController() 23 | { 24 | } 25 | 26 | public MeController(ApplicationUserManager userManager) 27 | { 28 | UserManager = userManager; 29 | } 30 | 31 | public ApplicationUserManager UserManager 32 | { 33 | get 34 | { 35 | return _userManager ?? HttpContext.Current.GetOwinContext().GetUserManager(); 36 | } 37 | private set 38 | { 39 | _userManager = value; 40 | } 41 | } 42 | 43 | // GET api/Me 44 | public GetViewModel Get() 45 | { 46 | var user = UserManager.FindById(User.Identity.GetUserId()); 47 | return new GetViewModel() { Hometown = user.Hometown }; 48 | } 49 | } 50 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Global.asax: -------------------------------------------------------------------------------- 1 | <%@ Application Codebehind="Global.asax.cs" Inherits="WebApp.MvcApplication" Language="C#" %> 2 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Global.asax.cs: -------------------------------------------------------------------------------- 1 | using System.Web; 2 | using System.Web.Http; 3 | using System.Web.Mvc; 4 | using System.Web.Optimization; 5 | using System.Web.Routing; 6 | 7 | namespace WebApp 8 | { 9 | public class MvcApplication : HttpApplication 10 | { 11 | protected void Application_Start() 12 | { 13 | AreaRegistration.RegisterAllAreas(); 14 | GlobalConfiguration.Configure(WebApiConfig.Register); 15 | FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 16 | RouteConfig.RegisterRoutes(RouteTable.Routes); 17 | BundleConfig.RegisterBundles(BundleTable.Bundles); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Models/IdentityModels.cs: -------------------------------------------------------------------------------- 1 | using System.Data.Entity; 2 | using System.Security.Claims; 3 | using System.Threading.Tasks; 4 | using Microsoft.AspNet.Identity; 5 | using Microsoft.AspNet.Identity.EntityFramework; 6 | 7 | namespace WebApp.Models 8 | { 9 | // You can add profile data for the user by adding more properties to your ApplicationUser class, please visit http://go.microsoft.com/fwlink/?LinkID=317594 to learn more. 10 | public class ApplicationUser : IdentityUser 11 | { 12 | public string Hometown { get; set; } 13 | 14 | public async Task GenerateUserIdentityAsync(UserManager manager) 15 | { 16 | // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType 17 | var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie); 18 | // Add custom user claims here 19 | return userIdentity; 20 | } 21 | } 22 | 23 | public class ApplicationDbContext : IdentityDbContext 24 | { 25 | public ApplicationDbContext() 26 | : base("DefaultConnection", throwIfV1Schema: false) 27 | { 28 | } 29 | 30 | public static ApplicationDbContext Create() 31 | { 32 | return new ApplicationDbContext(); 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Models/ManageViewModels.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel.DataAnnotations; 3 | using Microsoft.AspNet.Identity; 4 | using Microsoft.Owin.Security; 5 | 6 | namespace WebApp.Models 7 | { 8 | public class IndexViewModel 9 | { 10 | public bool HasPassword { get; set; } 11 | public IList Logins { get; set; } 12 | public string PhoneNumber { get; set; } 13 | public bool TwoFactor { get; set; } 14 | public bool BrowserRemembered { get; set; } 15 | } 16 | 17 | public class ManageLoginsViewModel 18 | { 19 | public IList CurrentLogins { get; set; } 20 | public IList OtherLogins { get; set; } 21 | } 22 | 23 | public class FactorViewModel 24 | { 25 | public string Purpose { get; set; } 26 | } 27 | 28 | public class SetPasswordViewModel 29 | { 30 | [Required] 31 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 32 | [DataType(DataType.Password)] 33 | [Display(Name = "New password")] 34 | public string NewPassword { get; set; } 35 | 36 | [DataType(DataType.Password)] 37 | [Display(Name = "Confirm new password")] 38 | [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] 39 | public string ConfirmPassword { get; set; } 40 | } 41 | 42 | public class ChangePasswordViewModel 43 | { 44 | [Required] 45 | [DataType(DataType.Password)] 46 | [Display(Name = "Current password")] 47 | public string OldPassword { get; set; } 48 | 49 | [Required] 50 | [StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)] 51 | [DataType(DataType.Password)] 52 | [Display(Name = "New password")] 53 | public string NewPassword { get; set; } 54 | 55 | [DataType(DataType.Password)] 56 | [Display(Name = "Confirm new password")] 57 | [Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match.")] 58 | public string ConfirmPassword { get; set; } 59 | } 60 | 61 | public class AddPhoneNumberViewModel 62 | { 63 | [Required] 64 | [Phone] 65 | [Display(Name = "Phone Number")] 66 | public string Number { get; set; } 67 | } 68 | 69 | public class VerifyPhoneNumberViewModel 70 | { 71 | [Required] 72 | [Display(Name = "Code")] 73 | public string Code { get; set; } 74 | 75 | [Required] 76 | [Phone] 77 | [Display(Name = "Phone Number")] 78 | public string PhoneNumber { get; set; } 79 | } 80 | 81 | public class ConfigureTwoFactorViewModel 82 | { 83 | public string SelectedProvider { get; set; } 84 | public ICollection Providers { get; set; } 85 | } 86 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Models/MeViewModels.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel.DataAnnotations; 4 | 5 | namespace WebApp.Models 6 | { 7 | // Models returned by MeController actions. 8 | public class GetViewModel 9 | { 10 | public string Hometown { get; set; } 11 | } 12 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Properties/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("WebApp")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("WebApp")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("31fdeaee-a2aa-4ab4-812f-d271cbcde0f2")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Revision and Build Numbers 33 | // by using the '*' as shown below: 34 | [assembly: AssemblyVersion("1.0.0.0")] 35 | [assembly: AssemblyFileVersion("1.0.0.0")] 36 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Properties/PublishProfiles/Deploy.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 6 | 7 | 8 | FileSystem 9 | Release 10 | Any CPU 11 | 12 | True 13 | False 14 | ..\..\Installer\Deploy\WebSite 15 | False 16 | 17 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Providers/ApplicationOAuthProvider.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Threading.Tasks; 3 | using Microsoft.Owin.Security.OAuth; 4 | 5 | namespace WebApp.Providers 6 | { 7 | public class ApplicationOAuthProvider : OAuthAuthorizationServerProvider 8 | { 9 | private readonly string _publicClientId; 10 | 11 | public ApplicationOAuthProvider(string publicClientId) 12 | { 13 | if (publicClientId == null) 14 | { 15 | throw new ArgumentNullException("publicClientId"); 16 | } 17 | 18 | _publicClientId = publicClientId; 19 | } 20 | 21 | public override Task ValidateClientRedirectUri(OAuthValidateClientRedirectUriContext context) 22 | { 23 | if (context.ClientId == _publicClientId) 24 | { 25 | Uri expectedRootUri = new Uri(context.Request.Uri, "/"); 26 | 27 | if (expectedRootUri.AbsoluteUri == context.RedirectUri) 28 | { 29 | context.Validated(); 30 | } 31 | else if (context.ClientId == "web") 32 | { 33 | var expectedUri = new Uri(context.Request.Uri, "/"); 34 | context.Validated(expectedUri.AbsoluteUri); 35 | } 36 | } 37 | 38 | return Task.FromResult(null); 39 | } 40 | } 41 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Results/ChallengeResult.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Net; 5 | using System.Net.Http; 6 | using System.Threading; 7 | using System.Threading.Tasks; 8 | using System.Web.Http; 9 | 10 | namespace WebApp.Results 11 | { 12 | public class ChallengeResult : IHttpActionResult 13 | { 14 | public ChallengeResult(string loginProvider, ApiController controller) 15 | { 16 | LoginProvider = loginProvider; 17 | Request = controller.Request; 18 | } 19 | 20 | public string LoginProvider { get; set; } 21 | public HttpRequestMessage Request { get; set; } 22 | 23 | public Task ExecuteAsync(CancellationToken cancellationToken) 24 | { 25 | Request.GetOwinContext().Authentication.Challenge(LoginProvider); 26 | 27 | HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Unauthorized); 28 | response.RequestMessage = Request; 29 | return Task.FromResult(response); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/_references.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Application/WebApp/Scripts/_references.js -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/app/_run.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | app.initialize(); 3 | 4 | // Activate Knockout 5 | ko.validation.init({ grouping: { observable: false } }); 6 | ko.applyBindings(app); 7 | }); 8 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/app/app.datamodel.js: -------------------------------------------------------------------------------- 1 | function AppDataModel() { 2 | var self = this; 3 | // Routes 4 | self.userInfoUrl = "/api/Me"; 5 | self.siteUrl = "/"; 6 | 7 | // Route operations 8 | 9 | // Other private operations 10 | 11 | // Operations 12 | 13 | // Data 14 | self.returnUrl = self.siteUrl; 15 | 16 | // Data access operations 17 | self.setAccessToken = function (accessToken) { 18 | sessionStorage.setItem("accessToken", accessToken); 19 | }; 20 | 21 | self.getAccessToken = function () { 22 | return sessionStorage.getItem("accessToken"); 23 | }; 24 | } 25 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/app/app.viewmodel.js: -------------------------------------------------------------------------------- 1 | function AppViewModel(dataModel) { 2 | // Private state 3 | var self = this; 4 | 5 | // Private operations 6 | function cleanUpLocation() { 7 | window.location.hash = ""; 8 | 9 | if (typeof (history.pushState) !== "undefined") { 10 | history.pushState("", document.title, location.pathname); 11 | } 12 | } 13 | // Data 14 | self.Views = { 15 | Loading: {} // Other views are added dynamically by app.addViewModel(...). 16 | }; 17 | self.dataModel = dataModel; 18 | 19 | // UI state 20 | self.view = ko.observable(self.Views.Loading); 21 | 22 | self.loading = ko.computed(function () { 23 | return self.view() === self.Views.Loading; 24 | }); 25 | 26 | // UI operations 27 | 28 | // Other navigateToX functions are added dynamically by app.addViewModel(...). 29 | 30 | // Other operations 31 | self.addViewModel = function (options) { 32 | var viewItem = new options.factory(self, dataModel), 33 | navigator; 34 | 35 | // Add view to AppViewModel.Views enum (for example, app.Views.Home). 36 | self.Views[options.name] = viewItem; 37 | 38 | // Add binding member to AppViewModel (for example, app.home); 39 | self[options.bindingMemberName] = ko.computed(function () { 40 | if (!dataModel.getAccessToken()) { 41 | // The following code looks for a fragment in the URL to get the access token which will be 42 | // used to call the protected Web API resource 43 | var fragment = common.getFragment(); 44 | 45 | if (fragment.access_token) { 46 | // returning with access token, restore old hash, or at least hide token 47 | window.location.hash = fragment.state || ''; 48 | dataModel.setAccessToken(fragment.access_token); 49 | } else { 50 | // no token - so bounce to Authorize endpoint in AccountController to sign in or register 51 | window.location = "/Account/Authorize?client_id=web&response_type=token&state=" + encodeURIComponent(window.location.hash); 52 | } 53 | } 54 | 55 | return self.Views[options.name]; 56 | }); 57 | 58 | if (typeof (options.navigatorFactory) !== "undefined") { 59 | navigator = options.navigatorFactory(self, dataModel); 60 | } else { 61 | navigator = function () { 62 | window.location.hash = options.bindingMemberName; 63 | }; 64 | } 65 | 66 | // Add navigation member to AppViewModel (for example, app.NavigateToHome()); 67 | self["navigateTo" + options.name] = navigator; 68 | }; 69 | 70 | self.initialize = function () { 71 | Sammy().run(); 72 | } 73 | } 74 | 75 | var app = new AppViewModel(new AppDataModel()); 76 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/app/common.js: -------------------------------------------------------------------------------- 1 |  2 | window.common = (function () { 3 | var common = {}; 4 | 5 | common.getFragment = function getFragment() { 6 | if (window.location.hash.indexOf("#") === 0) { 7 | return parseQueryString(window.location.hash.substr(1)); 8 | } else { 9 | return {}; 10 | } 11 | }; 12 | 13 | function parseQueryString(queryString) { 14 | var data = {}, 15 | pairs, pair, separatorIndex, escapedKey, escapedValue, key, value; 16 | 17 | if (queryString === null) { 18 | return data; 19 | } 20 | 21 | pairs = queryString.split("&"); 22 | 23 | for (var i = 0; i < pairs.length; i++) { 24 | pair = pairs[i]; 25 | separatorIndex = pair.indexOf("="); 26 | 27 | if (separatorIndex === -1) { 28 | escapedKey = pair; 29 | escapedValue = null; 30 | } else { 31 | escapedKey = pair.substr(0, separatorIndex); 32 | escapedValue = pair.substr(separatorIndex + 1); 33 | } 34 | 35 | key = decodeURIComponent(escapedKey); 36 | value = decodeURIComponent(escapedValue); 37 | 38 | data[key] = value; 39 | } 40 | 41 | return data; 42 | } 43 | 44 | return common; 45 | })(); -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Scripts/app/home.viewmodel.js: -------------------------------------------------------------------------------- 1 | function HomeViewModel(app, dataModel) { 2 | var self = this; 3 | 4 | self.myHometown = ko.observable(""); 5 | 6 | Sammy(function () { 7 | this.get('#home', function () { 8 | // Make a call to the protected Web API by passing in a Bearer Authorization Header 9 | $.ajax({ 10 | method: 'get', 11 | url: app.dataModel.userInfoUrl, 12 | contentType: "application/json; charset=utf-8", 13 | headers: { 14 | 'Authorization': 'Bearer ' + app.dataModel.getAccessToken() 15 | }, 16 | success: function (data) { 17 | self.myHometown('Your Hometown is : ' + data.hometown); 18 | } 19 | }); 20 | }); 21 | this.get('/', function () { this.app.runRoute('get', '#home') }); 22 | }); 23 | 24 | return self; 25 | } 26 | 27 | app.addViewModel({ 28 | name: "Home", 29 | bindingMemberName: "home", 30 | factory: HomeViewModel 31 | }); 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Startup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using Microsoft.Owin; 5 | using Owin; 6 | 7 | [assembly: OwinStartup(typeof(WebApp.Startup))] 8 | 9 | namespace WebApp 10 | { 11 | public partial class Startup 12 | { 13 | public void Configuration(IAppBuilder app) 14 | { 15 | ConfigureAuth(app); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ConfirmEmail.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Confirm Email"; 3 | } 4 | 5 |

@ViewBag.Title.

6 |
7 |

8 | Thank you for confirming your email. Please @Html.ActionLink("Click here to Log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" }) 9 |

10 |
11 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ExternalLoginConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ExternalLoginConfirmationViewModel 2 | @{ 3 | ViewBag.Title = "Register"; 4 | } 5 |

@ViewBag.Title.

6 |

Associate your @ViewBag.LoginProvider account.

7 | 8 | @using (Html.BeginForm("ExternalLoginConfirmation", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 | 12 |

Association Form

13 |
14 | @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 15 |

16 | You've successfully authenticated with @ViewBag.LoginProvider. 17 | Please enter a user name for this site below and click the Register button to finish 18 | logging in. 19 |

20 |
21 | @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) 22 |
23 | @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) 24 | @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" }) 25 |
26 |
27 |
28 | @Html.LabelFor(m => m.Hometown, new { @class = "col-md-2 control-label" }) 29 |
30 | @Html.TextBoxFor(m => m.Hometown, new { @class = "form-control" }) 31 |
32 |
33 |
34 |
35 | 36 |
37 |
38 | } 39 | 40 | @section Scripts { 41 | @Scripts.Render("~/bundles/jqueryval") 42 | } 43 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ExternalLoginFailure.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Login Failure"; 3 | } 4 | 5 |
6 |

@ViewBag.Title.

7 |

Unsuccessful login with service.

8 |
9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ForgotPassword.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ForgotPasswordViewModel 2 | @{ 3 | ViewBag.Title = "Forgot your password?"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("ForgotPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 |

Enter your email.

12 |
13 | @Html.ValidationSummary("", new { @class = "text-danger" }) 14 |
15 | @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) 16 |
17 | @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) 18 |
19 |
20 |
21 |
22 | 23 |
24 |
25 | } 26 | 27 | @section Scripts { 28 | @Scripts.Render("~/bundles/jqueryval") 29 | } 30 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ForgotPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Forgot Password Confirmation"; 3 | } 4 | 5 |
6 |

@ViewBag.Title.

7 |
8 |
9 |

10 | Please check your email to reset your password. 11 |

12 |
13 | 14 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/Login.cshtml: -------------------------------------------------------------------------------- 1 | @using WebApp.Models 2 | @model LoginViewModel 3 | @{ 4 | ViewBag.Title = "Log in"; 5 | } 6 | 7 |

@ViewBag.Title.

8 |
9 |
10 |
11 | @using (Html.BeginForm("Login", "Account", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 12 | { 13 | @Html.AntiForgeryToken() 14 |

Use a local account to log in.

15 |
16 | @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 17 |
18 | @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) 19 |
20 | @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) 21 | @Html.ValidationMessageFor(m => m.Email, "", new { @class = "text-danger" }) 22 |
23 |
24 |
25 | @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" }) 26 |
27 | @Html.PasswordFor(m => m.Password, new { @class = "form-control" }) 28 | @Html.ValidationMessageFor(m => m.Password, "", new { @class = "text-danger" }) 29 |
30 |
31 |
32 |
33 |
34 | @Html.CheckBoxFor(m => m.RememberMe) 35 | @Html.LabelFor(m => m.RememberMe) 36 |
37 |
38 |
39 |
40 |
41 | 42 |
43 |
44 |

45 | @Html.ActionLink("Register as a new user", "Register") 46 |

47 | @* Enable this once you have account confirmation enabled for password reset functionality 48 |

49 | @Html.ActionLink("Forgot your password?", "ForgotPassword") 50 |

*@ 51 | } 52 |
53 |
54 |
55 |
56 | @Html.Partial("_ExternalLoginsListPartial", new ExternalLoginListViewModel { ReturnUrl = ViewBag.ReturnUrl }) 57 |
58 |
59 |
60 | 61 | @section Scripts { 62 | @Scripts.Render("~/bundles/jqueryval") 63 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/Register.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.RegisterViewModel 2 | @{ 3 | ViewBag.Title = "Register"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("Register", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 |

Create a new account.

12 |
13 | @Html.ValidationSummary("", new { @class = "text-danger" }) 14 |
15 | @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) 16 |
17 | @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) 18 |
19 |
20 |
21 | @Html.LabelFor(m => m.Hometown, new { @class = "col-md-2 control-label" }) 22 |
23 | @Html.TextBoxFor(m => m.Hometown, new { @class = "form-control" }) 24 |
25 |
26 |
27 | @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" }) 28 |
29 | @Html.PasswordFor(m => m.Password, new { @class = "form-control" }) 30 |
31 |
32 |
33 | @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" }) 34 |
35 | @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" }) 36 |
37 |
38 |
39 |
40 | 41 |
42 |
43 | } 44 | 45 | @section Scripts { 46 | @Scripts.Render("~/bundles/jqueryval") 47 | } 48 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ResetPassword.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ResetPasswordViewModel 2 | @{ 3 | ViewBag.Title = "Reset password"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("ResetPassword", "Account", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 |

Reset your password.

12 |
13 | @Html.ValidationSummary("", new { @class = "text-danger" }) 14 | @Html.HiddenFor(model => model.Code) 15 |
16 | @Html.LabelFor(m => m.Email, new { @class = "col-md-2 control-label" }) 17 |
18 | @Html.TextBoxFor(m => m.Email, new { @class = "form-control" }) 19 |
20 |
21 |
22 | @Html.LabelFor(m => m.Password, new { @class = "col-md-2 control-label" }) 23 |
24 | @Html.PasswordFor(m => m.Password, new { @class = "form-control" }) 25 |
26 |
27 |
28 | @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" }) 29 |
30 | @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" }) 31 |
32 |
33 |
34 |
35 | 36 |
37 |
38 | } 39 | 40 | @section Scripts { 41 | @Scripts.Render("~/bundles/jqueryval") 42 | } 43 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/ResetPasswordConfirmation.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewBag.Title = "Reset password confirmation"; 3 | } 4 | 5 |
6 |

@ViewBag.Title.

7 |
8 |
9 |

10 | Your password has been reset. Please @Html.ActionLink("click here to log in", "Login", "Account", routeValues: null, htmlAttributes: new { id = "loginLink" }) 11 |

12 |
13 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/SendCode.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.SendCodeViewModel 2 | @{ 3 | ViewBag.Title = "Send"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("SendCode", "Account", new { ReturnUrl = Model.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { 9 | @Html.AntiForgeryToken() 10 | @Html.Hidden("rememberMe", @Model.RememberMe) 11 |

Send verification code

12 |
13 |
14 |
15 | Select Two-Factor Authentication Provider: 16 | @Html.DropDownListFor(model => model.SelectedProvider, Model.Providers) 17 | 18 |
19 |
20 | } 21 | 22 | @section Scripts { 23 | @Scripts.Render("~/bundles/jqueryval") 24 | } 25 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/VerifyCode.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.VerifyCodeViewModel 2 | @{ 3 | ViewBag.Title = "Verify"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("VerifyCode", "Account", new { ReturnUrl = Model.ReturnUrl }, FormMethod.Post, new { @class = "form-horizontal", role = "form" })) { 9 | @Html.AntiForgeryToken() 10 | @Html.Hidden("provider", @Model.Provider) 11 | @Html.Hidden("rememberMe", @Model.RememberMe) 12 |

Enter verification code

13 |
14 | @Html.ValidationSummary("", new { @class = "text-danger" }) 15 |
16 | @Html.LabelFor(m => m.Code, new { @class = "col-md-2 control-label" }) 17 |
18 | @Html.TextBoxFor(m => m.Code, new { @class = "form-control" }) 19 |
20 |
21 |
22 |
23 |
24 | @Html.CheckBoxFor(m => m.RememberBrowser) 25 | @Html.LabelFor(m => m.RememberBrowser) 26 |
27 |
28 |
29 |
30 |
31 | 32 |
33 |
34 | } 35 | 36 | @section Scripts { 37 | @Scripts.Render("~/bundles/jqueryval") 38 | } 39 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Account/_ExternalLoginsListPartial.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ExternalLoginListViewModel 2 | @using Microsoft.Owin.Security 3 | 4 |

Use another service to log in.

5 |
6 | @{ 7 | var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes(); 8 | if (loginProviders.Count() == 0) { 9 |
10 |

11 | There are no external authentication services configured. See this article 12 | for details on setting up this ASP.NET application to support logging in via external services. 13 |

14 |
15 | } 16 | else { 17 | using (Html.BeginForm("ExternalLogin", "Account", new { ReturnUrl = Model.ReturnUrl })) { 18 | @Html.AntiForgeryToken() 19 |
20 |

21 | @foreach (AuthenticationDescription p in loginProviders) { 22 | 23 | } 24 |

25 |
26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @section SPAViews { 2 | @Html.Partial("_Home") 3 | } 4 | @section Scripts{ 5 | @Scripts.Render("~/bundles/knockout") 6 | @Scripts.Render("~/bundles/app") 7 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Home/_Home.cshtml: -------------------------------------------------------------------------------- 1 |  2 |
3 |

ASP.NET

4 |

ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS, and JavaScript.

5 |

Learn more »

6 |
7 |
8 |
9 |

Your information

10 |

This section shows how you can call ASP.NET Web API to get the user details.

11 |

12 | 13 |

Learn more »

14 |
15 | 16 |
17 |

Getting started

18 |

19 | ASP.NET Single Page Application (SPA) helps you build applications that include significant client-side interactions using HTML, CSS, and JavaScript. 20 | It's now easier than ever before to getting started writing highly interactive web applications. 21 |

22 |

Learn more »

23 |
24 | 25 |
26 |

Web Hosting

27 |

You can easily find a web hosting company that offers the right mix of features and price for your applications.

28 |

Learn more »

29 |
30 |
31 | 32 | 33 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Manage/AddPhoneNumber.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.AddPhoneNumberViewModel 2 | @{ 3 | ViewBag.Title = "Phone Number"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("AddPhoneNumber", "Manage", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 |

Add a phone number

12 |
13 | @Html.ValidationSummary("", new { @class = "text-danger" }) 14 |
15 | @Html.LabelFor(m => m.Number, new { @class = "col-md-2 control-label" }) 16 |
17 | @Html.TextBoxFor(m => m.Number, new { @class = "form-control" }) 18 |
19 |
20 |
21 |
22 | 23 |
24 |
25 | } 26 | 27 | @section Scripts { 28 | @Scripts.Render("~/bundles/jqueryval") 29 | } 30 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Manage/ChangePassword.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ChangePasswordViewModel 2 | @{ 3 | ViewBag.Title = "Change Password"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("ChangePassword", "Manage", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 |

Change Password Form

12 |
13 | @Html.ValidationSummary("", new { @class = "text-danger" }) 14 |
15 | @Html.LabelFor(m => m.OldPassword, new { @class = "col-md-2 control-label" }) 16 |
17 | @Html.PasswordFor(m => m.OldPassword, new { @class = "form-control" }) 18 |
19 |
20 |
21 | @Html.LabelFor(m => m.NewPassword, new { @class = "col-md-2 control-label" }) 22 |
23 | @Html.PasswordFor(m => m.NewPassword, new { @class = "form-control" }) 24 |
25 |
26 |
27 | @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" }) 28 |
29 | @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" }) 30 |
31 |
32 |
33 |
34 | 35 |
36 |
37 | } 38 | @section Scripts { 39 | @Scripts.Render("~/bundles/jqueryval") 40 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Manage/ManageLogins.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.ManageLoginsViewModel 2 | @using Microsoft.Owin.Security 3 | @{ 4 | ViewBag.Title = "Manage your external logins"; 5 | } 6 | 7 |

@ViewBag.Title.

8 | 9 |

@ViewBag.StatusMessage

10 | @{ 11 | var loginProviders = Context.GetOwinContext().Authentication.GetExternalAuthenticationTypes(); 12 | if (loginProviders.Count() == 0) { 13 |
14 |

15 | There are no external authentication services configured. See this article 16 | for details on setting up this ASP.NET application to support logging in via external services. 17 |

18 |
19 | } 20 | else 21 | { 22 | if (Model.CurrentLogins.Count > 0) 23 | { 24 |

Registered Logins

25 | 26 | 27 | @foreach (var account in Model.CurrentLogins) 28 | { 29 | 30 | 31 | 49 | 50 | } 51 | 52 |
@account.LoginProvider 32 | @if (ViewBag.ShowRemoveButton) 33 | { 34 | using (Html.BeginForm("RemoveLogin", "Manage")) 35 | { 36 | @Html.AntiForgeryToken() 37 |
38 | @Html.Hidden("loginProvider", account.LoginProvider) 39 | @Html.Hidden("providerKey", account.ProviderKey) 40 | 41 |
42 | } 43 | } 44 | else 45 | { 46 | @:   47 | } 48 |
53 | } 54 | if (Model.OtherLogins.Count > 0) 55 | { 56 | using (Html.BeginForm("LinkLogin", "Manage")) 57 | { 58 | @Html.AntiForgeryToken() 59 |
60 |

61 | @foreach (AuthenticationDescription p in Model.OtherLogins) 62 | { 63 | 64 | } 65 |

66 |
67 | } 68 | } 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Manage/SetPassword.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.SetPasswordViewModel 2 | @{ 3 | ViewBag.Title = "Create Password"; 4 | } 5 | 6 |

@ViewBag.Title.

7 |

8 | You do not have a local username/password for this site. Add a local 9 | account so you can log in without an external login. 10 |

11 | 12 | @using (Html.BeginForm("SetPassword", "Manage", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 13 | { 14 | @Html.AntiForgeryToken() 15 | 16 |

Create Local Login

17 |
18 | @Html.ValidationSummary("", new { @class = "text-danger" }) 19 |
20 | @Html.LabelFor(m => m.NewPassword, new { @class = "col-md-2 control-label" }) 21 |
22 | @Html.PasswordFor(m => m.NewPassword, new { @class = "form-control" }) 23 |
24 |
25 |
26 | @Html.LabelFor(m => m.ConfirmPassword, new { @class = "col-md-2 control-label" }) 27 |
28 | @Html.PasswordFor(m => m.ConfirmPassword, new { @class = "form-control" }) 29 |
30 |
31 |
32 |
33 | 34 |
35 |
36 | } 37 | @section Scripts { 38 | @Scripts.Render("~/bundles/jqueryval") 39 | } -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Manage/VerifyPhoneNumber.cshtml: -------------------------------------------------------------------------------- 1 | @model WebApp.Models.VerifyPhoneNumberViewModel 2 | @{ 3 | ViewBag.Title = "Verify Phone Number"; 4 | } 5 | 6 |

@ViewBag.Title.

7 | 8 | @using (Html.BeginForm("VerifyPhoneNumber", "Manage", FormMethod.Post, new { @class = "form-horizontal", role = "form" })) 9 | { 10 | @Html.AntiForgeryToken() 11 | @Html.Hidden("phoneNumber", @Model.PhoneNumber) 12 |

Enter verification code

13 |
@ViewBag.Status
14 |
15 | @Html.ValidationSummary("", new { @class = "text-danger" }) 16 |
17 | @Html.LabelFor(m => m.Code, new { @class = "col-md-2 control-label" }) 18 |
19 | @Html.TextBoxFor(m => m.Code, new { @class = "form-control" }) 20 |
21 |
22 |
23 |
24 | 25 |
26 |
27 | } 28 | 29 | @section Scripts { 30 | @Scripts.Render("~/bundles/jqueryval") 31 | } 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | @{ 3 | ViewBag.Title = "Error"; 4 | } 5 | 6 |

Error.

7 |

An error occurred while processing your request.

8 | 9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Shared/Lockout.cshtml: -------------------------------------------------------------------------------- 1 | @model System.Web.Mvc.HandleErrorInfo 2 | 3 | @{ 4 | ViewBag.Title = "Locked Out"; 5 | } 6 | 7 |
8 |

Locked out.

9 |

This account has been locked out, please try again later.

10 |
11 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | @ViewBag.Title - My ASP.NET Application 6 | 7 | 8 | @Styles.Render("~/Content/css") 9 | @Scripts.Render("~/bundles/modernizr") 10 | 11 | 12 | 31 |
32 | @RenderBody() 33 | @RenderSection("SPAViews", required: false) 34 |
35 |
36 |

© @DateTime.Now.Year - My ASP.NET Application

37 |
38 |
39 | 40 | @Scripts.Render("~/bundles/jquery") 41 | @Scripts.Render("~/bundles/bootstrap") 42 | @RenderSection("Scripts", required: false) 43 | 44 | 45 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Shared/_LoginPartial.cshtml: -------------------------------------------------------------------------------- 1 | @using Microsoft.AspNet.Identity 2 | @if (Request.IsAuthenticated) 3 | { 4 | using (Html.BeginForm("LogOff", "Account", new { area = "" }, FormMethod.Post, new { id = "logoutForm", @class = "navbar-right" })) 5 | { 6 | @Html.AntiForgeryToken() 7 | 8 | 14 | } 15 | } 16 | else 17 | { 18 | 22 | } 23 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/Web.config: -------------------------------------------------------------------------------- 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 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "~/Views/Shared/_Layout.cshtml"; 3 | } 4 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Web.Debug.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/Web.Release.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 17 | 18 | 19 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Application/WebApp/favicon.ico -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Application/WebApp/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/Installer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "WebAppMM", "WebAppMM\WebAppMM.wixproj", "{DE378512-210C-45E4-A9AC-C0EB80954677}" 7 | EndProject 8 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "WebApp", "WebApp\WebApp.wixproj", "{BBB63D91-190F-4D94-BD3A-CC16A85CE23C}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x86 = Debug|x86 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {DE378512-210C-45E4-A9AC-C0EB80954677}.Debug|x86.ActiveCfg = Debug|x86 17 | {DE378512-210C-45E4-A9AC-C0EB80954677}.Debug|x86.Build.0 = Debug|x86 18 | {DE378512-210C-45E4-A9AC-C0EB80954677}.Release|x86.ActiveCfg = Release|x86 19 | {DE378512-210C-45E4-A9AC-C0EB80954677}.Release|x86.Build.0 = Release|x86 20 | {BBB63D91-190F-4D94-BD3A-CC16A85CE23C}.Debug|x86.ActiveCfg = Debug|x86 21 | {BBB63D91-190F-4D94-BD3A-CC16A85CE23C}.Debug|x86.Build.0 = Debug|x86 22 | {BBB63D91-190F-4D94-BD3A-CC16A85CE23C}.Release|x86.ActiveCfg = Release|x86 23 | {BBB63D91-190F-4D94-BD3A-CC16A85CE23C}.Release|x86.Build.0 = Release|x86 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Code/Features.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Code/IISMeta.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Installed OR NETFRAMEWORK45 15 | Installed OR IISMAJORVERSION 16 | Installed OR ASPNETINSTALLED="#1" 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Code/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Installed OR NETFRAMEWORK40FULL 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Code/UI.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Resources/Banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Installer/WebApp/Resources/Banner.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Resources/Dialog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Installer/WebApp/Resources/Dialog.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Resources/EULA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Riched20 6.2.9200}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\f0\fs20 TODO: Place EULA Text Here. \par 4 | \par 5 | Special Note:\par 6 | \par 7 | The Windows Installer ScrollableText control is very old and is limited in the Rich Text that it can render. It is recommended to use the oldest version of Wordpad that you have to create this file and to test the installer on all of your platforms to ensure the EULA is readable.\par 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebApp/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/web-application/Installer/WebApp/Resources/Icon.ico -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebAppMM/WebAppMM.wixproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 3.7 7 | {de378512-210c-45e4-a9ac-c0eb80954677} 8 | 2.0 9 | WebAppMM 10 | Module 11 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 12 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 13 | 14 | 15 | bin\$(Configuration)\ 16 | obj\$(Configuration)\ 17 | Debug 18 | 19 | 20 | bin\$(Configuration)\ 21 | obj\$(Configuration)\ 22 | 23 | 24 | 25 | 26 | 27 | 28 | 36 | -------------------------------------------------------------------------------- /WiX-v3-Votive/web-application/Installer/WebAppMM/WebAppMMcustom.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsService", "WindowsService\WindowsService.csproj", "{8291DA2B-F366-4F95-A1AB-3271A13A93C4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {8291DA2B-F366-4F95-A1AB-3271A13A93C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {8291DA2B-F366-4F95-A1AB-3271A13A93C4}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {8291DA2B-F366-4F95-A1AB-3271A13A93C4}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {8291DA2B-F366-4F95-A1AB-3271A13A93C4}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/WindowsService/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.ServiceProcess; 5 | using System.Text; 6 | 7 | namespace WindowsService 8 | { 9 | static class Program 10 | { 11 | /// 12 | /// The main entry point for the application. 13 | /// 14 | static void Main() 15 | { 16 | ServiceBase[] ServicesToRun; 17 | ServicesToRun = new ServiceBase[] 18 | { 19 | new Service1() 20 | }; 21 | ServiceBase.Run(ServicesToRun); 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/WindowsService/Properties/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("WindowsService")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("WindowsService")] 13 | [assembly: AssemblyCopyright("Copyright © 2017")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8291da2b-f366-4f95-a1ab-3271a13a93c4")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/WindowsService/Service1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace WindowsService 2 | { 3 | partial class Service1 4 | { 5 | /// 6 | /// Required designer variable. 7 | /// 8 | private System.ComponentModel.IContainer components = null; 9 | 10 | /// 11 | /// Clean up any resources being used. 12 | /// 13 | /// true if managed resources should be disposed; otherwise, false. 14 | protected override void Dispose(bool disposing) 15 | { 16 | if (disposing && (components != null)) 17 | { 18 | components.Dispose(); 19 | } 20 | base.Dispose(disposing); 21 | } 22 | 23 | #region Component Designer generated code 24 | 25 | /// 26 | /// Required method for Designer support - do not modify 27 | /// the contents of this method with the code editor. 28 | /// 29 | private void InitializeComponent() 30 | { 31 | components = new System.ComponentModel.Container(); 32 | this.ServiceName = "Service1"; 33 | } 34 | 35 | #endregion 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/WindowsService/Service1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.ComponentModel; 4 | using System.Data; 5 | using System.Diagnostics; 6 | using System.Linq; 7 | using System.ServiceProcess; 8 | using System.Text; 9 | 10 | namespace WindowsService 11 | { 12 | public partial class Service1 : ServiceBase 13 | { 14 | public Service1() 15 | { 16 | InitializeComponent(); 17 | } 18 | 19 | protected override void OnStart(string[] args) 20 | { 21 | } 22 | 23 | protected override void OnStop() 24 | { 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Application/WindowsService/WindowsService.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {8291DA2B-F366-4F95-A1AB-3271A13A93C4} 8 | WinExe 9 | Properties 10 | WindowsService 11 | WindowsService 12 | v4.0 13 | 512 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | Component 47 | 48 | 49 | Service1.cs 50 | 51 | 52 | 53 | 54 | 55 | 56 | xcopy /iery "$(TargetDir)*.*" "$(SolutionDir)..\Installer\Deploy" 57 | 58 | 65 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/Installer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "WindowsServiceMM", "WindowsServiceMM\WindowsServiceMM.wixproj", "{6156D1AF-804F-4234-86CF-E560CB58D1FD}" 7 | EndProject 8 | Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "WindowsService", "WindowsService\WindowsService.wixproj", "{EC12FC70-69AE-46AA-AD84-53022C818C25}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x86 = Debug|x86 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {6156D1AF-804F-4234-86CF-E560CB58D1FD}.Debug|x86.ActiveCfg = Debug|x86 17 | {6156D1AF-804F-4234-86CF-E560CB58D1FD}.Debug|x86.Build.0 = Debug|x86 18 | {6156D1AF-804F-4234-86CF-E560CB58D1FD}.Release|x86.ActiveCfg = Release|x86 19 | {6156D1AF-804F-4234-86CF-E560CB58D1FD}.Release|x86.Build.0 = Release|x86 20 | {EC12FC70-69AE-46AA-AD84-53022C818C25}.Debug|x86.ActiveCfg = Debug|x86 21 | {EC12FC70-69AE-46AA-AD84-53022C818C25}.Debug|x86.Build.0 = Debug|x86 22 | {EC12FC70-69AE-46AA-AD84-53022C818C25}.Release|x86.ActiveCfg = Release|x86 23 | {EC12FC70-69AE-46AA-AD84-53022C818C25}.Release|x86.Build.0 = Release|x86 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Code/Features.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Code/IISMeta.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Installed OR NETFRAMEWORK45 15 | Installed OR IISMAJORVERSION 16 | Installed OR ASPNETINSTALLED="#1" 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Code/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | Installed OR NETFRAMEWORK40FULL 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Code/UI.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Banner.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Dialog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Dialog.jpg -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/EULA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Riched20 6.2.9200}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\f0\fs20 TODO: Place EULA Text Here. \par 4 | \par 5 | Special Note:\par 6 | \par 7 | The Windows Installer ScrollableText control is very old and is limited in the Rich Text that it can render. It is recommended to use the oldest version of Wordpad that you have to create this file and to test the installer on all of your platforms to ensure the EULA is readable.\par 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v3-Votive/windows-service/Installer/WindowsService/Resources/Icon.ico -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsServiceMM/WindowsServiceMM.wixproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 3.7 7 | {6156d1af-804f-4234-86cf-e560cb58d1fd} 8 | 2.0 9 | WindowsServiceMM 10 | Module 11 | $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets 12 | $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets 13 | 14 | 15 | bin\$(Configuration)\ 16 | obj\$(Configuration)\ 17 | Debug 18 | 19 | 20 | bin\$(Configuration)\ 21 | obj\$(Configuration)\ 22 | 23 | 24 | 25 | 26 | 27 | 28 | 36 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsServiceMM/WindowsServiceMM.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WiX-v3-Votive/windows-service/Installer/WindowsServiceMM/WindowsServiceMMcustom.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/README.md: -------------------------------------------------------------------------------- 1 | ## Tutorials 2 | 3 | [Web API](https://github.com/iswix-llc/iswix-tutorials/tree/master/WiX-v4-HeatWave/web-api) An ASP.NET Core WebAPI project using swagger as it's default page shipped framework independent and hosted by IIS. Checks for IIS and .NET Hosting Bundle. Implemented in .NET 7.0 and WiX v4.0.3. (Heatwave) 4 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "dotnet-ef": { 6 | "version": "7.0.13", 7 | "commands": [ 8 | "dotnet-ef" 9 | ] 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/Api.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/Controllers/WeatherForecastController.cs: -------------------------------------------------------------------------------- 1 | using Microsoft.AspNetCore.Mvc; 2 | 3 | namespace Api.Controllers 4 | { 5 | [ApiController] 6 | [Route("[controller]")] 7 | public class WeatherForecastController : ControllerBase 8 | { 9 | private static readonly string[] Summaries = new[] 10 | { 11 | "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" 12 | }; 13 | 14 | private readonly ILogger _logger; 15 | 16 | public WeatherForecastController(ILogger logger) 17 | { 18 | _logger = logger; 19 | } 20 | 21 | [HttpGet(Name = "GetWeatherForecast")] 22 | public IEnumerable Get() 23 | { 24 | return Enumerable.Range(1, 5).Select(index => new WeatherForecast 25 | { 26 | Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)), 27 | TemperatureC = Random.Shared.Next(-20, 55), 28 | Summary = Summaries[Random.Shared.Next(Summaries.Length)] 29 | }) 30 | .ToArray(); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/Program.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace Api 3 | { 4 | public class Program 5 | { 6 | public static void Main(string[] args) 7 | { 8 | var builder = WebApplication.CreateBuilder(args); 9 | 10 | // Add services to the container. 11 | 12 | builder.Services.AddControllers(); 13 | // Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle 14 | builder.Services.AddEndpointsApiExplorer(); 15 | builder.Services.AddSwaggerGen(); 16 | 17 | var app = builder.Build(); 18 | 19 | // Configure the HTTP request pipeline. 20 | if (app.Environment.IsDevelopment()) 21 | { 22 | app.UseSwagger(); 23 | app.UseSwaggerUI(); 24 | } 25 | 26 | app.UseAuthorization(); 27 | 28 | 29 | app.MapControllers(); 30 | 31 | app.Run(); 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | true 8 | false 9 | true 10 | Release 11 | Any CPU 12 | FileSystem 13 | ..\..\Installer\Deploy\WebSite 14 | FileSystem 15 | <_TargetId>Folder 16 | 17 | net7.0 18 | win-x64 19 | 80af7556-1533-4e4d-ab2b-e00cd2e45a8a 20 | true 21 | 22 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/launchsettings.json", 3 | "iisSettings": { 4 | "windowsAuthentication": false, 5 | "anonymousAuthentication": true, 6 | "iisExpress": { 7 | "applicationUrl": "http://localhost:35020", 8 | "sslPort": 0 9 | } 10 | }, 11 | "profiles": { 12 | "http": { 13 | "commandName": "Project", 14 | "dotnetRunMessages": true, 15 | "launchBrowser": true, 16 | "launchUrl": "swagger", 17 | "applicationUrl": "http://localhost:5043", 18 | "environmentVariables": { 19 | "ASPNETCORE_ENVIRONMENT": "Development" 20 | } 21 | }, 22 | "IIS Express": { 23 | "commandName": "IISExpress", 24 | "launchBrowser": true, 25 | "launchUrl": "swagger", 26 | "environmentVariables": { 27 | "ASPNETCORE_ENVIRONMENT": "Development" 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/WeatherForecast.cs: -------------------------------------------------------------------------------- 1 | namespace Api 2 | { 3 | public class WeatherForecast 4 | { 5 | public DateOnly Date { get; set; } 6 | 7 | public int TemperatureC { get; set; } 8 | 9 | public int TemperatureF => 32 + (int)(TemperatureC / 0.5556); 10 | 11 | public string? Summary { get; set; } 12 | } 13 | } -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Api/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | }, 8 | "AllowedHosts": "*" 9 | } 10 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Application/Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.7.34031.279 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Api", "Api\Api.csproj", "{80AF7556-1533-4E4D-AB2B-E00CD2E45A8A}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {80AF7556-1533-4E4D-AB2B-E00CD2E45A8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {80AF7556-1533-4E4D-AB2B-E00CD2E45A8A}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {80AF7556-1533-4E4D-AB2B-E00CD2E45A8A}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {80AF7556-1533-4E4D-AB2B-E00CD2E45A8A}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {25EB6BCD-52CD-43F3-A2C1-6F3396DCF00B} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/Installer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.7.34031.279 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "WebAPI", "WebAPI\WebAPI.wixproj", "{F524F099-5AB8-4482-94B6-5F58B30CD7F4}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|ARM64 = Debug|ARM64 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|ARM64 = Release|ARM64 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|ARM64.ActiveCfg = Debug|ARM64 19 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|ARM64.Build.0 = Debug|ARM64 20 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|x64.ActiveCfg = Debug|x64 21 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|x64.Build.0 = Debug|x64 22 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|x86.ActiveCfg = Debug|x86 23 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Debug|x86.Build.0 = Debug|x86 24 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|ARM64.ActiveCfg = Release|ARM64 25 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|ARM64.Build.0 = Release|ARM64 26 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|x64.ActiveCfg = Release|x64 27 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|x64.Build.0 = Release|x64 28 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|x86.ActiveCfg = Release|x86 29 | {F524F099-5AB8-4482-94B6-5F58B30CD7F4}.Release|x86.Build.0 = Release|x86 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {0156E64F-C970-4B49-AD26-E537C56C4CA7} 36 | EndGlobalSection 37 | EndGlobal 38 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/IISMeta.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/Product.wxs: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Banner.jpg -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Dialog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Dialog.jpg -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/EULA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Riched20 6.2.9200}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\f0\fs20 TODO: Place EULA Text Here. \par 4 | \par 5 | Special Note:\par 6 | \par 7 | The Windows Installer ScrollableText control is very old and is limited in the Rich Text that it can render. It is recommended to use the oldest version of Wordpad that you have to create this file and to test the installer on all of your platforms to ensure the EULA is readable.\par 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWave/web-api/Installer/WebAPI/Resources/Icon.ico -------------------------------------------------------------------------------- /WiX-v4-HeatWave/web-api/Installer/WebAPI/UI.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/Application.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34322.80 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DesktopApplication", "DesktopApplication\DesktopApplication.csproj", "{482E38D7-E7C4-420F-9FDB-58C36725F255}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Release|x64 = Release|x64 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {482E38D7-E7C4-420F-9FDB-58C36725F255}.Debug|x64.ActiveCfg = Debug|x64 15 | {482E38D7-E7C4-420F-9FDB-58C36725F255}.Debug|x64.Build.0 = Debug|x64 16 | {482E38D7-E7C4-420F-9FDB-58C36725F255}.Release|x64.ActiveCfg = Release|x64 17 | {482E38D7-E7C4-420F-9FDB-58C36725F255}.Release|x64.Build.0 = Release|x64 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {27608E7A-8B26-45FA-B1D9-9B0FA6748BEC} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/App.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Configuration; 2 | using System.Data; 3 | using System.Windows; 4 | 5 | namespace DesktopApplication 6 | { 7 | /// 8 | /// Interaction logic for App.xaml 9 | /// 10 | public partial class App : Application 11 | { 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Windows; 2 | 3 | [assembly: ThemeInfo( 4 | ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located 5 | //(used if a resource is not found in the page, 6 | // or application resource dictionaries) 7 | ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located 8 | //(used if a resource is not found in the page, 9 | // app, or any theme specific resource dictionaries) 10 | )] 11 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/DesktopApplication.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | WinExe 5 | net8.0-windows 6 | DesktopApplication 7 | enable 8 | enable 9 | true 10 | x64 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/MainWindow.xaml: -------------------------------------------------------------------------------- 1 |  9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/MainWindow.xaml.cs: -------------------------------------------------------------------------------- 1 | using System.Text; 2 | using System.Windows; 3 | using System.Windows.Controls; 4 | using System.Windows.Data; 5 | using System.Windows.Documents; 6 | using System.Windows.Input; 7 | using System.Windows.Media; 8 | using System.Windows.Media.Imaging; 9 | using System.Windows.Navigation; 10 | using System.Windows.Shapes; 11 | 12 | namespace DesktopApplication 13 | { 14 | /// 15 | /// Interaction logic for MainWindow.xaml 16 | /// 17 | public partial class MainWindow : Window 18 | { 19 | public MainWindow() 20 | { 21 | InitializeComponent(); 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Application/DesktopApplication/Properties/PublishProfiles/FolderProfile.pubxml: -------------------------------------------------------------------------------- 1 |  2 | 5 | 6 | 7 | Release 8 | x64 9 | ..\..\Installer\Deploy 10 | FileSystem 11 | <_TargetId>Folder 12 | net8.0-windows 13 | win-x64 14 | true 15 | false 16 | false 17 | 18 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/IISMeta.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Product.wxs: -------------------------------------------------------------------------------- 1 |  2 | 3 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Banner.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Banner.jpg -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Dialog.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Dialog.jpg -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/EULA.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033\deflangfe1033{\fonttbl{\f0\fswiss\fprq2\fcharset0 Arial;}} 2 | {\*\generator Riched20 6.2.9200}{\*\mmathPr\mdispDef1\mwrapIndent1440 }\viewkind4\uc1 3 | \pard\nowidctlpar\f0\fs20 TODO: Place EULA Text Here. \par 4 | \par 5 | Special Note:\par 6 | \par 7 | The Windows Installer ScrollableText control is very old and is limited in the Rich Text that it can render. It is recommended to use the oldest version of Wordpad that you have to create this file and to test the installer on all of your platforms to ensure the EULA is readable.\par 8 | } 9 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iswix-llc/iswix-tutorials/d5919f4d75836d52c818e3386f92d6d69ec34193/WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/Resources/Icon.ico -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/DesktopApplication/UI.wxs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /WiX-v4-HeatWaveBuildTools/desktop-application/Installer/Installer.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 17 4 | VisualStudioVersion = 17.8.34322.80 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "DesktopApplication", "DesktopApplication\DesktopApplication.wixproj", "{4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|ARM64 = Debug|ARM64 11 | Debug|x64 = Debug|x64 12 | Debug|x86 = Debug|x86 13 | Release|ARM64 = Release|ARM64 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 19 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|ARM64.Build.0 = Debug|ARM64 20 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|x64.ActiveCfg = Debug|x64 21 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|x64.Build.0 = Debug|x64 22 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|x86.ActiveCfg = Debug|x86 23 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Debug|x86.Build.0 = Debug|x86 24 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|ARM64.ActiveCfg = Release|ARM64 25 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|ARM64.Build.0 = Release|ARM64 26 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|x64.ActiveCfg = Release|x64 27 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|x64.Build.0 = Release|x64 28 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|x86.ActiveCfg = Release|x86 29 | {4607DFDB-B66F-4772-8CBB-2404F5BC3C4F}.Release|x86.Build.0 = Release|x86 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | GlobalSection(ExtensibilityGlobals) = postSolution 35 | SolutionGuid = {5A0DE3B0-67EF-4744-AD83-7D64B9E1B90A} 36 | EndGlobalSection 37 | EndGlobal 38 | --------------------------------------------------------------------------------