WiX Toolset: Creating a simple WiX project breaks in VS2017: The "CreateProjectReferenceDefineConstants" task was not found - visual-studio-2017

I'm new to using Wix, and tried to make a simple installation for my App. I did the following:
Downloaded and installed the Extension for Visual Studio 2017 from here.
Download and installed WiX Toolset v3.11.1
Created a Setup Project for WiX v3
Added a reference to my App in the project, and added the block in Product.wxs:
<Component Id="ProductComponent">
<File Source="$(var.MyApplication.TargetPath)" />
</Component>
When I compile the Wix setup project, I get the following error:
The "CreateProjectReferenceDefineConstants" task was not found. Check
the following: 1.) The name of the task in the project file is the
same as the name of the task class. 2.) The task class is "public" and
implements the Microsoft.Build.Framework.ITask interface. 3.) The task
is correctly declared with in the project file, or in the
*.tasks files located in the "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin" directory.
Any ideas what went wrong? I can't find any mention of this error online. Whatis a task and what is a task class? I was expecting that doing this quick guide would be enough for a simple installer.

.NET Framework 3.5: After some debugging the solution was to install the .NET Framework 3.5.
WiX 3.x has a build-dependency requiring this version.
WiX 4.x requires .NET Core and Framework 4+.
Procedure:
Hold Windows Key and Tap R. Type: appwiz.cpl and press Enter.
Left pane, click "Turn Windows Features On / Off".
Tick / enable: ".NET Framework 3.5".
Run Windows Update (!) . If you can. To check for security updates.
On Windows 10:
Hold Windows Key and Tap R.
Type: ms-settings:windowsupdate and press Enter.
Click "Check for updates".
Now you should be able to build your WiX projects.
Or talk to tech support if you are in a managed environment. They should have a ready-made package for this .NET runtime, unless the runtime itself is prohibited from use.
Links:
Cannot build WIX project on windows 10
Hello WiX - minimal step-by-step example for writing a WiX installer in Visual Studio.
Chris Painter's samples: https://github.com/iswix-llc/iswix-tutorials
WiX Quick Start. Further links to more samples.

Related

Building and running unit tests with Visual Studio build tools

I am adding unit tests to an existing C++ Visual Studio projects, using the Google Test adapter.
It's all running fine on my computer with Visual Studio 2019, but when I try to run them on the build server I get the following error
error : This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is ..\packages\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.1.8.1.3\build\native\Microsoft.googletest.v140.windesktop.msvcstl.static.rt-dyn.targets.
However, we're not using NuGet for package management. I tried installing it but complained about missing folders. This is not a .NET project, so I think that's a red herring.
I was able to install the Google Test adapter on my computer using the Visual Studio Installer, but it does not show up as a part of the VS Build Tools on the build server.
Running msbuild -t:restore does not help, it just reports "nothing to do."
I don't understand why the Google Test adapter isn't available for VS Build Tools, since it seems to be required in order to build the unit tests. Does anyone know why it doesn't work? What's the best practice for handling this?
Thanks!
The problem is that your c++ project has missed the content of googletest nuget package. So the solution is to restore the whole nuget package in your c++ project.
Update 1
First of all, take a brand new backed up project and restore it to when the problem started.
Besides, msbuild -t:restore command applies to projects with PackageReference nuget management format.
Since your c++ project used packages.config nuget management format, msbuild -t:restore will not work. See this official document.Instead, you should use nuget restore command.
This command works for your current project and running this command will restore the nuget packages and then you will never face the issue.
Before using it, you should download nuget.exe CLI and config its path into System Environment Variable PATH so that CMD can invoke nuget.
The steps about configing nuget.exe, you can refer to this link.
Steps
1) delete packages folder under the solution folder
2)Then, open build tool, run:
nuget restore xxx\xxx\xxx.sln(the full path of solution file containing the c++ project and the unit test project)
Then, you can build the project with the command. And I hope the error will disappear.

"Manage Client-Side Libraries" menu not appearing

I'm trying to use the new Library Manager (LibMan) feature in Visual Studio 2017 (I'm using Version 15.7.1) but it is not appearing on either the project context menu or the Project menu.
I have tried various web projects but I can't see it for any of them. The only project type I haven't tried is ASP.NET Core 2.1 (I don't have the preview installed) but I can't find any docs that say it only works with ASP.NET Core 2.1
Here is a screenshot to prove it's not there:
had the same issue. I found the answer two it on another site, but for the life of me cannot find it for reference right now. The easiest thing to do is to build it yourself and install it. Works perfectly fine, I did it and now have the Manage Client Side libraries showing up.
Clone / download the Library Manager from GitHub. (https://github.com/aspnet/LibraryManager/)
Build it in Visual Studio 2017
Run the .Vsix installer
Begin to use the Manage Client Side Libraries from the context menu or project menu.
Hope this helps.
For me, in VS 2022 the context menu option appears but the dialog doesn't show. I found out that instead of right-clicking on project item i have to right-click on wwwroot item and then the dialog is shown
Even though Visual Studio Community 15.7.5 references the "Library Manager" it looks like it is still in Preview and to be released with VS 15.8.
If you would like to use the Library Manager now it is fairly easy but there are a few work arounds right now to get it to install, probably a reason it is still in Preview.
Clone or Download the source code
Note: This requires the Visual Studio extension development Workload to be installed (Tools -> Get Tools and Features under "Other Toolsets").
According to this issue on GitHub it will not install, before compiling the Extension open the project file for the LibraryManager.Vsix project
[LibraryManagerDir]\src\LibraryManager.Vsix\Microsoft.Web.LibraryManager.Vsix.csproj
and update (line #30)
<IsProductComponent>false</IsProductComponent>
After 15.8 comes out this needs to be reset back to true to be able to install it.
Open the LibraryManager.sln and make sure to change the Configuration to Release and Build the Solution.
This will create a .vsix install file:
[LibraryManagerDir]\src\LibraryManager.Vsix\bin\Release\Microsoft.Web.LibraryManager.vsix
Open Microsoft.Web.LibraryManager.vsix to launch the Visual Studio Installer.
Then you will have the Add->Client Side Library in your Context Menu.

Visual Studio installer fails on AspNetDiagnosticPack.msi

I have the problem described here.
Any attempt to install AspNetDiagnosticPack.msi
C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.AspNetDiagnosticPack.Msi,version=15.0.40314.0\AspNetDiagnosticPack.msi fails with error status: 1603.
I cannot add or remove any component using VS installer now.
I have installed VS 2017 Professional as follows:
Microsoft Visual Studio Professional 2017
Version 15.6.6
VisualStudio.15.Release/15.6.6+27428.2037
Microsoft .NET Framework
Version 4.7.02558
Installed Version: Professional
Visual C++ 2017 00370-20001-54960-AA753
Microsoft Visual C++ 2017
Visual F# Tools 10.1 for F# 4.1 00370-20001-54960-AA753
Microsoft Visual F# Tools 10.1 for F# 4.1
Application Insights Tools for Visual Studio Package 8.11.10402.2
Application Insights Tools for Visual Studio
ASP.NET and Web Tools 2017 15.0.40314.0
ASP.NET and Web Tools 2017
Azure App Service Tools v3.0.0 15.0.40215.0
Azure App Service Tools v3.0.0
C# Tools 2.7.0-beta3-62715-05. Commit Hash: db02128e6e3c4bdfc93e6ec425ac9162b4d4fe80
C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Common Azure Tools 1.10
Provides common services for use by Azure Mobile Services and Microsoft Azure Tools.
Cookiecutter 15.6.18072.2
Provides tools for finding, instantiating and customizing templates in cookiecutter format.
Dotfuscator Community Edition 5.32.1.6167-6ce295ebd
PreEmptive Protection - Dotfuscator CE
JavaScript Language Service 2.0
JavaScript Language Service
JavaScript Project System 2.0
JavaScript Project System
Microsoft Azure Tools 2.9
Microsoft Azure Tools for Microsoft Visual Studio 2017 - v2.9.51212.2
Microsoft JVM Debugger 1.0
Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines
Microsoft MI-Based Debugger 1.0
Provides support for connecting Visual Studio to MI compatible debuggers
Microsoft Visual C++ Wizards 1.0
Microsoft Visual C++ Wizards
Microsoft Visual Studio VC Package 1.0
Microsoft Visual Studio VC Package
Node.js Tools 1.4.11027.3
Adds support for developing and debugging Node.js apps in Visual Studio
NuGet Package Manager 4.6.0
NuGet Package Manager in Visual Studio. For more information about NuGet, visit http://docs.nuget.org/.
ProjectServicesPackage Extension 1.0
ProjectServicesPackage Visual Studio Extension Detailed Info
Python 15.6.18072.2
Provides IntelliSense, projects, templates, debugging, interactive windows, and other support for Python developers.
Python - Django support 15.6.18072.2
Provides templates and integration for the Django web framework.
Python - IronPython support 15.6.18072.2
Provides templates and integration for IronPython-based projects.
Python - Profiling support 15.6.18072.2
Profiling support for Python projects.
SQL Server Data Tools 15.1.61801.210
Microsoft SQL Server Data Tools
TypeScript Tools 15.6.20202.3
TypeScript Tools for Microsoft Visual Studio
Visual Basic Tools 2.7.0-beta3-62715-05. Commit Hash: db02128e6e3c4bdfc93e6ec425ac9162b4d4fe80
Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used.
Visual Studio Code Debug Adapter Host Package 1.0
Interop layer for hosting Visual Studio Code debug adapters in Visual Studio
I thought that the problem originated in having some remains from previous VS editions. I could not uninstall namely ASP.NET and Web Tools 2013.1. I have finally removed it after all by reinstalling VS 2015 and using the FixIt tool from this answer.. But still AspNetDiagnosticPack.msi fails the same way.
I also tried to uninstall the web development role completely, since I will probably not use it soon, but installation allways fails. Is there any workaround to make the VS installer work again?
The msi log is here.
Action 15:50:02: WebConfigInitialize.
Action start 15:50:02: WebConfigInitialize.
MSI (s) (B8:F4) [15:50:02:244]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIFF27.tmp, Entrypoint: Initialize
MSI (s) (B8:40) [15:50:02:244]: Generating random cookie.
MSI (s) (B8:40) [15:50:02:244]: Created Custom Action Server with PID 10588 (0x295C).
MSI (s) (B8:14) [15:50:02:306]: Running as a service.
MSI (s) (B8:14) [15:50:02:306]: Hello, I'm your 32bit Impersonated custom action server.
SFXCA: Failed to create new CA process via RUNDLL32. Error code: 2
CustomAction WebConfigInitialize returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 15:50:02: WebConfigInitialize. Return value 3.
But the problem is within custom action WebConfigInitialize and the log is no big help. I have observed that there was an entry Microsoft ASP.NET and Web Tools 2015.1 - Visual Studio 2015 when I ran the uninstaller tool - and this entry failed uninstalling. Perhaps the origin of my problems is that I once installed some beta verison of ASP.NET with Visual Studio 2015. I do not need ASP.NET for now, but I the VS 2017 installer is stuck on the error.
I have found WebToolsExtensionsVS14_rc2_48.msi in cached packages on my computer and uninstalling this package fails the same way with 1603 as the 2017 current package.
Action 8:30:41: WebConfigInitialize.
Action start 8:30:42: WebConfigInitialize.
MSI (s) (48:BC) [08:30:42:012]: Creating MSIHANDLE (550) of type 790542 for thread 1980
MSI (s) (48:F0) [08:30:42:012]: Invoking remote custom action. DLL: C:\Windows\Installer\MSIA2E1.tmp, Entrypoint: Initialize
MSI (s) (48!A0) [08:30:42:028]: Creating MSIHANDLE (551) of type 790531 for thread 928
SFXCA: Failed to create new CA process via RUNDLL32. Error code: 2
MSI (s) (48!A0) [08:30:42:028]: Closing MSIHANDLE (551) of type 790531 for thread 928
CustomAction WebConfigInitialize returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (48:F0) [08:30:42:028]: Closing MSIHANDLE (550) of type 790542 for thread 1980
Action ended 8:30:42: WebConfigInitialize. Return value 3.
Similar problem here, that one ended with reninstalling his machine.
Or is there some tool that would show the dependencies of a particular MSI package?
The Developer's community link that is current and relevant to the problem is here.
It says:
We have fixed the problem in an upcoming release. We've addressed the
managed custom action in the ASP.NET Diagnostic Pack that modifies the
root web.config file to use a native code action. This should avoid
the CLR errors previously reported when it tried to launch the managed
code DLL during the install.
The fix for this is now in our latest Visual Studio Preview release.
If you'd like to try out the fix, you can access the preview build
here: https://www.visualstudio.com/vs/preview
Looks like there is no workaround except waiting for Microsoft's fix to that faliling custom action. I have ignored this recommendation at first because I did not check the date of comments properly but they are only one month old.
But when I have tried to install the preview it ended with exactly the same error.
In 15.7.1 version the same error again.
UPDATE: It looks like the issue might be a managed code custom action failing in the MSI in question (.NET code that can't run - for whatever reason 1, 2, 3).
Suggestion
I would first try to 1) do the reboot I recommend below - to clear the air and release any locks - then 2) disable security software / anti-virus and 3) try the install and enable logging as described below.
Core Deployment Problems
As deployment goes, problems tend to center around: 1) something is locked (in use - by other processes or other users logged on), 2) something is blocked (access / permissions denied), 3) dependencies are missing for your custom actions or the whole installer (runtime requirements not satisfied - for example missing .NET runtime version), 4) something is corrupted (data file, OS settings, malware is often the culprit here - or unwise tinkering), 5) there is an unexpected system state such as the disk being full, or more exotic the date and time is wrong, or there is a licensing issue or some other oddity, etc...
That is a very simplified list of causes - there are obviously many further issues, for example 6) localization errors: hard coded paths, erroneous parsing of dates and time, invalid characters in path names, etc... 7) file and path names are too long, 8) and the Microsoft specialty: weird and unexpected incompatibilities between products not thought to have a valid reason to conflict with each other (different versions of Visual Studio, etc...), etc..., but that is going way too far for your problem. Still, here is a generic "deployment problems" summary from some time back - just for reference.
Procedure
Reboot: The first thing I would do is to reboot and then try to invoke the install the regular way. This is just to rule out this "simple solution" (which sometimes works). There could be files in use that the installer must replace in order to complete.
Logging: In order to maximize the available debugging information you could log the install with verbose logging and debugging information (if you have access to the MSI itself).
Open an elevated command prompt (right click and run as administrator)
Change current directory (cd) until you get to: C:\ProgramData\Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.AspNetDiagnosticPack.Msi,version=15.0.40314.0\
MSI Log: Run this command (adjusting paths as appropriate - especially for the log file): msiexec.exe /i AspNetDiagnosticPack.msi /L*vx C:\Test.log
Enable All: You can enable logging for all MSI files (slows installs, but great for advanced users): http://www.installsite.org/pages/en/msifaq/a/1022.htm (section: "Globally for all setups on a machine")
Interpret: How to interpret an MSI log file: http://www.installsite.org/pages/en/msifaq/a/1045.htm
Event Log: You can also have a look in the event log. Rather than repeating the procedure here, I will link to a similar, recent answer.
Different User: This is unusual advice (and I haven't tried it), but sometimes you can succeed with difficult installs by creating a new local admin user on the machine, and then running the installer from there. It has to do with errors in the user profile. Not the first thing to try, but adding it as an option.
I tried to uninstall VS 2019(!) and I faced the same problem (I cannot add or remove any component using VS installer).
It hang for a long time and finally throwed an error at "AspNetDiagnosticPack.msi".
I found a solution that led me also to
%programdata%Microsoft\VisualStudio\Packages\Microsoft.VisualStudio.AspNetDiagnosticPack.Msi,version=16.3.283.64955
I simply ran the msi stand alone. During the process I was asked to do kind of clean up for an outstanding installation issue.
After that I ran the uninstall ( And later the reinstallation ) of VS 2019 again and it worked.
Maybe this solution helps you along with VS 2017

How to create a C++ MSI Custom Action DLL using Visual Studio 2010?

If I want to abort an installation in a C# custom action, it will have to display an unwanted "1001 Error" message box.
To avoid this I once used a C++ project which can abort the installation without the message box.
I'm trying to create this C++ project again but the only tutorial I found on the internet
http://www.codeproject.com/Articles/1747/MSI-Custom-Action-DLL
isn't updated since 2002. How can I do the same on VS 2010?
That example is outdated. The easiest way today is to download and install Windows Installer XML (http://wix.codeplex.com). Then say File | New Project | Windows Installer | C++ Custom Action
Also of note is the C# custom action project. Your 1001 error message tells me that you are using InstallUtil / Installer Class custom actions. The C# project type in WiX is called Deployment Tools Foundation (DTF) and is far superior. Checkout the following for an explanation of how it works and appears to MSI as a C++ custom action.
Deployment Tools Foundation (DTF) Managed Custom Actions

Visual Studio setup for C++: .NET Framework warning

I have a native C++ application developed in Visual Studio 2010. There's also a setup project as a part of the solution. When the setup is being build, the warning pops up:
WARNING: The target version of the .NET Framework in the project does
not match the .NET Framework launch condition version '.NET Framework
4 Client Profile'. Update the version of the .NET Framework launch
condition to match the target version of the.NET Framework in the
Advanced Compile Options Dialog Box (VB) or the Application Page (C#,
F#).
In (c++ app) properties, there's a field in Common Properties that says:
Targeted framework: .NETFramework, Version=v4.0
which can't be edited.
Now the questions is: Why do I need .NETFramework for C++ application at all???
You can add (using a text editor) <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> to the <PropertyGroup Label="Globals"> section in all of your solution's .vcxproj files, then reload the modified projects. This change causes VS to stop adding the bogus launch condition.