I am trying to install Edge Webview2 Runtime via a Wix Bootstrapper using the following code:
<!-- Microsoft Edge Webview2 Runtime -->
<ExePackage
Id="MicrosoftEdgeWebview2"
DisplayName="Microsoft Edge Webview2 Runtime"
Compressed="no"
Cache="no"
PerMachine="yes"
Vital ="yes"
Permanent ="yes"
InstallCommand="/silent /install"
UninstallCommand="/silent /uninstall"
Name="MicrosoftEdgeWebview2Setup.exe"
DetectCondition="MicrosoftEdgeWebview2CurrentVersion64 >= MicrosoftEdgeWebview2MinimumVersion"
SourceFile="MicrosoftEdgeWebview2Setup.exe">
<Payload SourceFile="MicrosoftEdgeWebview2Setup.exe"/>
</ExePackage>
I have placed MicrosoftEdgeWebview2Setup.exe in the Wix Bootstrapper Project. My code builds okay and I have verified that MicrosoftEdgeWebview2Setup.exe is being included in the final executable by opening it in 7zip.
The problem occurs when I try installing the executable. When it gets to the Edge Webview2 Runtime, a dialog box opens asking to locate Webview2Setup.exe. This is not the desired behavior as I have packaged MicrosoftEdgeWebview2Setup.exe in the Wix project. Am I doing anything wrong here?
[Note: I cannot package Edge Webview2 Runtime as a RemotePayload because the certificate details are being changed between versions.]
All I needed to do to make it work was to replace Compressed="yes" with Compressed="no" and to remove <Payload SourceFile="MicrosoftEdgeWebview2Setup.exe"/>
Related
I am building a setup project for windows desktop application using Visual Studio 2013 and Instal Shield 2015 Limted Edition.
This application has two dependent run time environment
SQL Server 2012 LocalDB
Adobe Flash Player ActiveX
The option 1 is already listed in the installshield Redistributable and i am able to include but i couldn't find any redistributable item for option 2.
My setup project need to check the Adobe Flash Player ActiveX status in the machine, if not found then it has to install it automatically before installing the actual application.
Any Merge module available for Adobe Flash Player ActiveX?
How to do the same?
I have installed professional edition of installshield software(trial)
src .
Followed the tutorial youtube to create a new Adobe ActiveX.prq file
Included the same in my setup project and my setup able to detect the Adobe ActiveX status and act as required.
XML Code of my Adobe ActiveX PreRequisite File(open .prq file in Visual Studio to see the same)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<SetupPrereq>
<conditions>
<condition Type="1" Comparison="2" Path="HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayerActiveX" FileName="" ReturnValue=""></condition>
</conditions>
<files>
<file LocalFile="<ProgramFilesFolder>\InstallShield\2015LE\SetupPrerequisites\Adobe ActiveX\flashplayer_21_ax_debug.exe" URL="https://fpdownload.macromedia.com/pub/flashplayer/updaters/21/flashplayer_21_ax_debug.exe" CheckSum="F60EDF21DC3F89980651BE01FFB22F9F" FileSize="0,19762368"></file>
</files>
<execute file="flashplayer_21_ax_debug.exe"></execute>
<properties Id="{72D7E3D1-C9DF-4FA6-9F9B-4E5117AB2920}" Description="This prerequisite installs the Adobe ActiveX V21." AltPrqURL=""></properties>
</SetupPrereq>
This code will help someone in need.
I have developed a 32-bit C++ application using Visual Studio 2015 (on Windows 10). I want to deploy it onto machines running Windows 7 and later.
I put together a WiX installer and included the VC++ redistributable merge module as described here. The merge module I included was C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC140_CRT_x86.msm.
This installer appears to work fine but on Windows 7 the installed program will not run, complaining about missing api-ms-win-crt-runtime-l1-1-0.dll.
From searching I suspect that there may be extra files in the redistributable package vc_redist.x86.exe from here, but the WiX docs tell me to use an msm rather than an exe.
It's also possible that the merge module failed to install. I didn't see any errors but I haven't re-run it with logs enabled to check that possibility.
Another option may be to use burn but I am not familiar with this tool; I will go that route if it's the correct one but I'd prefer to stick with MSI if possible.
The VC++ runtime redistributables got more complicated in Visual Studio 2015. See the VC team blog post about the universal CRT. Basically, the merge module is insufficient:
There will not be a merge module for the Universal CRT. If you currently use the CRT merge modules and still want to deploy the Visual C++ libraries centrally, we recommend that you move to the above mentioned Windows Update package or to the VCRedist. Alternatively, you may choose to link statically to the Universal CRT and the Visual C++ libraries.
We ran into the trouble that the MSI package failed to install the redistributable with MSI Error 1618: 'Another installation is already in progress' during installation/uninstallation. We installed the 2015 redistributable with WIX by using a Bootstraper. For example:
<Chain>
<!-- Microsoft Visual C++ 2015 x86 libraries -->
<ExePackage Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes"
SourceFile="EXAMPLE_PATH\vc_redist.x86.exe" InstallCommand="/install /passive /norestart">
</ExePackage>
<MsiPackage Id="MainPackage" SourceFile="YOUR_MSI_PACKAGE.msi" DisplayInternalUI="no" Compressed="yes" Vital="yes"/>
</Chain>
It's worth noting that it is now possible to distribute the Universal C Runtime DLLs with your application. The MSDN blog post describes the steps:
Install the Windnows 10 SDK
Go to C:\Program Files (x86)\Windows Kits\10\Redist\ucrt and find the DLLs for the platform you are targeting
Copy them into your application's program directory
They are not big. About 2 megabytes in total.
I ended up using this technique because:
It does not require me to create a separate WiX package and then bootstrap them;
It does not require the user to run any extra installers
I cannot speak to whether it would work on all computers, but it works on the ones I have tested.
UPDATE 201521011559: I'm wondering if this is caused by an error in the dependency specifications in the .nuspec file used to build the package...
The .nuspec file for the client SDK is on GoCardless' GitHub repo
https://github.com/gocardless/gocardless-dotnet/blob/master/GoCardlessSdk/GoCardlessSdk.nuspec
and includes this section:
<dependencies>
<group targetFramework="net20">
<dependency id="Newtonsoft.Json" version="4.5.11"/>
<dependency id="RestSharp.Net2" version="1.1.11"/>
</group>
<!-- For reasons unknown, NuGet pack will not recognise targetFramework and tries to put all our deps into the default group.-->
<!--
<group targetFramework="net35">
<dependency id="Newtonsoft.Json" version="5.0.2"/>
<dependency id="RestSharp" version="104.1"/>
</group>
-->
</dependencies>
Am I right in thinking that means it's going to try and install RestSharp.Net2, regardless of the target framework version of the target project?
ORIGINAL QUESTION:
One of our projects is an ASP.NET web application - target framework set to .NET 3.5, no client profile or anything.
I've just installed the NuGet package containing the GoCardless .NET SDK (http://www.nuget.org/packages/GoCardless/)
PM> Install-Package GoCardless
It appears to work fine. Then I add a reference to GoCardless.Sdk to one of my pages, and the project refuses to compile:
The type or namespace name 'GoCardlessSdk' could not be found (are you missing a using directive or an assembly reference?)
What's really odd is that if I remove the reference, then right-click References, Add Reference, browse to the ..\packages\GoCardless\lib\net35\ folder and select GoCardlessSdk.dll, I get this error:
'GoCardlessSdk.dll', or one of its dependencies, requires a later version of the .NET Framework than the one specified in the project. You can change the .NET Framework target by clicking Properties on the Project menu and then selecting a new target in the '.NET Framework' dropdown box.
Do you still want to add a reference to 'GoCardlessSdk.dll' in the project?
I've checked the package using NuGet Package Explorer. It definitely exposes both a .NET 2.0 and a .NET 3.5 version; the only dependencies are Newtonsoft.Json and RestSharp, both of which run just fine on .NET 3.5.
I'm using Visual Studio 2010 Premium on Windows 7 x64. Is this a Visual Studio problem, a .NET problem or something specifically wrong with the GoCardless SDK NuGet package?
I've fixed this in the past by uninstalling Microsoft Blend. It gets installed along with Visual Studio 2012, and it also installs its own version of Newtonsoft.Json.dll. It does something weird with the DLL (maybe it installs the DLL in the GAC?) that causes Visual Studio to reference the Blend version of the DLL, rather than whatever other DLL it should be referencing.
There's possibly a friendlier solution than uninstalling Microsoft Blend, but if you don't use Blend then that's the easiest option!
What I would suggest you is re-arrange your whole solution:
First of all remove: - GoCardless Client Libraries 1.1.15 (Or 1.1.16)
again if you have installed it now:
Than try to compile your solution again and if everything runs normal you should get the error that you can not find a file from the reference .dll right?
Than you need to make sure that for:
.NETFramework 3.5
Newtonsoft.Json (≥ 5.0.2) || RestSharp (≥ 104.1)
and for
Or for .NETFramework 2.0
Newtonsoft.Json (≥ 4.5.11) || RestSharp.Net2 (≥ 1.1.11)
are matching exaclty the version they are here. (Newest update from GoCardless)
If you have checked that with the nuget controller:
Updating a Package(click to visit page)
From the Tools menu, select Library Package Manager and then click
Package Manager Console. To check if there are newer versions
available for any installed packages, enter Get-Package -updates at
the prompt.
Get-Package command
To update a package, enter Update-Package with the package ID. For
example, enter the command Update-Package jQuery. For more options
that you can use with the Update-Package command, enter get-help
Update-Package or see (../Reference/Package-manager-Console-Commands).
If those updates / maybe downgrades are done you can want to change the .Net Framework of you Application by doing following:
In Solution Explorer, open the shortcut menu for the project that you want to change, and then choose Properties.
In the left column of the properties window, choose the Application tab. Visual Studio App Properties Application tab
(After you create a Windows Store app in Visual Studio 2013, you can't
change the targeted version of either Windows or the .NET Framework.)
In the Target Framework list, choose the version that you want.
In the verification dialog box that appears, choose the Yes button.
The project unloads. When it reloads, it targets the .NET Framework
version that you just chose.
Than if you have changed it to the .Net FrameWork 3.5 (Id suggest you take that regarding your imports) you can re-import the GoCardless.dll and tell me what happens. In my opinion it should be able to add the reference and start working with it.
That package is no longer supported and has been unlisted by it's owner.
I've create a new one here:
https://github.com/getAddress/goCardless
(or PM> Install-Package getAddress.goCardless)
I make a exe installer that include .net and msi with bundle of wix v3.8. The installer will show two UI that one is bundle and another is msi when installing. User Requirement is that the installer showing one UI. My code as followers:
<Chain>
<ExePackage Id="DoNetFull" Name =".NET Framework 4.0 full runtime" Cache="no" Compressed="yes" PerMachine="yes" Vital="yes" SourceFile="Resource\dotNetFx40_Full_x86_x64.exe"
InstallCommand="/q /norestart" Permanent="yes" DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)">
<ExitCode Behavior="forceReboot"/>
</ExePackage>
<MsiPackage Id="WinApp" Compressed="yes" DisplayInternalUI="yes" ForcePerMachine="yes" SourceFile="Resource\WinAppSetup.msi" Vital="yes" InstallCondition="NOT VersionNT64"></MsiPackage>
</Chain>
The DisplayInternalUI of MsiPackage must be set yes because of several interactive dialogs.How do i do?
Thanks!
You'll need to write a custom BA that shows only when you want it to. The default wixstdba will show UI through the whole installation process, although the MSI UI should show on top when it runs.
Update: You can find an example of a custom BA in the WiX toolset source code under src\Setup\WixBA. That's a WPF UI but you could use it to understand how to build your own custom solution.
It is possible you can read about silent install here: http://wix.sourceforge.net/manual-wix3/install_directx9.htm and also in here http://msdn.microsoft.com/en-us/library/ee942965.aspx
I am new to WiX and have built a standalone installer. I would like to detect if the system has .NET 4.5 on it and prompt the user to install this. My development environment is Visual Studio 2010 using the WiX 3.7 toolset.
From some of the tutorials I have seen I should either use WiX 3.6 Burn or use the WiX bootstrapper project template in Visual Studio 2010.
For some reason, when I installed Wix 3.7 I don't have the bootstrapper template (I am not sure if I am missing an extension to download).
Is it better to use the bootstrapper template over Burn? What are the differences?
You need to create a new project named "Bootstrapper Project" (this template must be in your Visual Studio 2010 installation, related to the Windows Installer XML). Here are very good blog posts with manuals:
Introducing Managed Bootstrapper Applications by Heath Stewart
WiX Burn – tips/tricks by Neil Sleightholm
Wix burn, is Wix Bootstrapper. They are the same thing. Burn is simply the name given to the Wix Bootstrapper, but they do tend to switch around between calling it "wix burn" and "wix bootstrapper". But as I've said they are the same thing.
Here is my wix bootstrapper which checks for version of .net then downloads and installs it before installing my .msi You will need to add a reference to WixNetFxExtension.dll
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="MyProgramInstaller" Version="1.0.0.0" Manufacturer="myCompany" UpgradeCode="yourcodehere">
<!-- here's the license statement, would suggest you update this to something more useful. -->
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<!-- here's the .net download installer you can change this using the following chart -->
<!-- http://wixtoolset.org/documentation/manual/v3/customactions/wixnetfxextension.html -->
<PackageGroupRef Id="NetFx451Web"/>
<MsiPackage Id="myProgram" SourceFile="$(var.SolutionDir)SetupProject1/bin/Release/myProgramInstaller.msi"/>
</Chain>
</Bundle>
</Wix>