WiX Patch dialog - background image not shown - installation

I have created an working WiX Patch but during it's installation it does not show the product background image.
The original product setup dialog shows the images and they are defined in it's project like:
<Product ...>
<WixVariable Id="WixUIBannerBmp" Value="gn_setup_dialog_banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="gn_setup_dialog.bmp" />
The patch is created and works fine. The problem is that it does not show these images. It shows some default background for the dialog.
Here is my patch if this helps:
<?xml version='1.0' encoding='windows-1252'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Patch AllowRemoval='yes'
Manufacturer='xxx'
MoreInfoURL='...'
DisplayName='...'
Description='Small Update Patch'
Classification='Update'
Codepage="...">
<Media Id='5000' Cabinet='RTM.cab'>
<PatchBaseline Id='RTM' />
</Media>
<PatchFamily Id="HotFixPatchFamily" Version="1.0.1.0" Supersede="no" />
</Patch>
</Wix>
Thanks for helping.

For some reason the patch was delivering these two files as "new" ones...even tough they were not changed.
Anyway, I solved the problem by replacing the stock Wix dialog images, like it is suggested here (at bottom "Replacing the stock bitmaps"):
http://wix.sourceforge.net/manual-wix2/WixUI_dialog_library.htm

Related

App icon in UWP

I am new to Xamarin and I am creating UWP application. I wanted to know From where i can set app icon image. I had gone through may articles and question on stack-overflow that looks similar, but it still its not clear..
So my Question is exactly where i should change my image for logo. only 24x24 as shown in below image.then what are the others badge logo and etc.?
should i change all images for logo with all dimensions also?
AppxMainfest.Xaml
<?xml version="1.0" encoding="utf-8"?>
<Package ...>
...
<Properties>
<DisplayName>StockDispatchApp.UWP</DisplayName>
<PublisherDisplayName>pci207</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.10240.0" MaxVersionTested="10.0.10586.0" />
</Dependencies>
<Resources>
<Resource Language="EN-US" />
</Resources>
<Applications>
<Application Id="App" Executable="StockDispatchApp.UWP.exe" EntryPoint="StockDispatchApp.UWP.App">
<uap:VisualElements DisplayName="StockDispatchApp.UWP" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="StockDispatchApp.UWP" BackgroundColor="transparent">
<uap:LockScreen Notification="" BadgeLogo="Assets\96x96.png" />
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png"></uap:DefaultTile>
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
...
The MSDN documentation provides clear description of where each of the images is used. In the bottom you can see Asset size tables tables which contain all the dimensions and their usage.
As for the Square 44x44 logo, the first five images in the first row are used for different scales in the app list.
The target images are used for app icons in different places around the system. In their unplated form, they should have transparent background. You can provide just the sizes recommended by the form, but you can also provide more sizes (see the documentation for the complete table).
You don't need to worry about this, you can simply generate all the icons from Visual Studio 2017.
Go to App manifest and click on Visual Assets In all visual assets
There is option called Asset Generator, select at least a 400x400 px
icon file size for the source field
And tap generate And here you get
the all icons.
For reference please have a look at the attached screenshot.

How to show application name in windows tiles in windows phone uwp

How to show the application name in the tiles.
As shown in the figure, i am developing the last application in the screen. For that i need to show the name of the application.
In PackageManifest file i have added all the images to show the images in the home screen.
Any help on this highly appreciated.
Thank you.
<Applications>
<Application Id="App" Executable="$targetnametoken$.exe" EntryPoint="MMRevamp_2016.App">
<uap:VisualElements DisplayName="Maalaimalar" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png" Description="MMRevamp_2016" BackgroundColor="transparent">
<uap:LockScreen Notification="badge" BadgeLogo="Images\BadgeLogo.png" />
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" Square71x71Logo="Images\Square142x142Logo.png" Square310x310Logo="Images\Square310x310Logo.png">
<uap:ShowNameOnTiles>
<uap:ShowOn Tile="square310x310Logo" />
</uap:ShowNameOnTiles>
</uap:DefaultTile>
</uap:VisualElements>
</Applications>
If you open your Package.appxmanifest and go to Visual Assets, you will see show name with check boxes. Check off appropriate box next to your asset.
See Screenshot for Example
If you are doing XML you can set the branding attribute to "name" as well. E.g like this:
<tile>
<visual>
<binding template="TileMedium" branding="name">
</binding>
</visual>
</tile>

Redirect to my own website when press "Update" button in Visual Studio - Tools - Extensions and Updates

colleagues.
I created simple VS2015 Extension: myExtension.vsix
Then I created .msi installer (used WIX and this article)
It's OK! I installed my Extension and it works.
I created local private MyLocalGallery.xml and registered myExtension.vsix in it
As a result I see installed myExtension in Tools - Extensions and Updates - Online - MyLocalGallery
I increase version for myExtension in MyLocalGallery.xml => I saw my update and the button UPDATE here: Tools - Extensions and Updates - Updates
QUESTION:
I press update, VS takes
<content type="application/octet-stream" src="Extensions\myExtension.vsix" />
from MyLocalGallery.xml and makes update. But... I want VS to make redirect to my own website where users can download .msi (not .vsix)
How can I ask Visual Studio to go to my URL???
If I remove this element
<content type="application/octet-stream" src="Extensions\myExtension.vsix" />
button UPDATE is present, I click it but nothing happens.
If I set .msi file, I get error ("The file is not a valid VSIX package")
<content type="application/octet-stream" src="Extensions\myExtension.msi" />
May be it's very trivial issue, but I spent a lot of time trying to do it.
I can't find answer and hope you help me. Thank you
I found the answer accidentally!
This question helps me
So we should add element to our entry in MyLocalGallery.xml:
<entry>
...
<title type="text">my extension</title>
...
<link rel="update" type="text" href="http://example.com/install.msi"/>
<Vsix xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/developer/vsx-syndication-schema/2010">
...
</Vsix>
And when we click Download or Update then VS redirect us to http://example.com/install.msi
Also we should remove this element from the feed xml (because it has higher priority)
<content type="application/octet-stream" src="Extensions\myExtension.msi" />

Wix Burn: Basic UI handling if No Net Framework is there

I wrote a Boostrapper UI in C# for Net Framework 2.0 using Win-Forms. It started working fine and designed forms are responding as expected.
Here is my Wix Bundle Code:
<?define TargetFile=$(var.MyBA.TargetDir)$(var.MyBA.TargetFileName)?>
<?define BootstrapConfigFile=$(var.MyBA.ProjectDir)BootstrapperCore.config?>
<Bundle Name="Bootstrapper1" Version="1.0.0.0" Manufacturer="Farrukh" UpgradeCode="54c4a4a4-dca8-4ae4-b2f4-5e3f3fd8cb92">
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
<Payload SourceFile="$(var.BootstrapConfigFile)"/>
<Payload SourceFile="$(var.TargetFile)"/>
<Payload SourceFile="$(env.WIX)\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
</BootstrapperApplicationRef>
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
<Chain>
<!--<PackageGroupRef Id='Netfx4Full' />-->
<MsiPackage Id="MyInstaller"
Cache="no"
Visible="yes"
DisplayInternalUI="yes"
SourceFile="MyProduct.msi"
/>
</Chain>
</Bundle>
As you can see that it doesn't include NetFX package and as it requires Net-Framework 2.0, I experimented with renaming the Net Framework registry keys:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup-Renamed
and 32 bit
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup-Renamed
so that it won't be able to detect it. This resulted in displaying a very basic UI: i.e.
I believe , this was displayed due to following markups in my Bundle, but I'm not sure about that
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
However, when I clicked "Accept and Install" nothing happened and buttons just got disappeared. That may be because I added no NetFx Package, neither any reference to WixNetFxExtension. (And I will definitely gonna add these and will see results later).
Question: I want to edit this basic UI so if my user try to install it on Windows XP (with no Net Framework), he/she would get the UI as I will design, not this basic one. So how can I edit this basic UI?
I feel, I'm missing some basic thing here, but need some guidance.. would really appreciate any help/guidance.
Regards
I was able to solve this after finding a thread on Wix User's mailing list. Here it is:
customizing burn prerequisite boostrapper image in theme
So this screen is known as Burn Prerequisite and it has a special WixVariable ID. Here is code from my Bootstrapper, depicting the use of my own custom theme for Burn's pre-req screen:
<WixVariable Id="PreqbaThemeXml" Value="..\resources\MbaPrereqTheme.xml" />
<WixVariable Id="PreqbaThemeWxl" Value="..\resources\MbaPrereqTheme.wxl" />
And any resources like Logo.png, Banner.bmp and NetfxLicense.rtf etc which you have referenced in MbaPrereqTheme.xml, would have to be part of Bootstrapper as a PayLoad:
<BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
<Payload SourceFile="$(var.BootstrapConfigFile)"/>
<Payload SourceFile="$(var.MyBootstrapDll)"/>
<Payload SourceFile="$(env.WIX)\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
<!-- Following are required as payload and to be used by Pre-Req screen.-->
<Payload SourceFile="..\resources\logo.png"/>
<Payload SourceFile="..\resources\Banner.bmp"/>
<Payload SourceFile="..\resources\NetfxLicense.rtf"/>
</BootstrapperApplicationRef>
And this started working just like as I wished :).
Regards

Wix and Eventlog

I have seen How do you create an event log source using WiX. My question is what is the common use (scenario) of specifying Event Source in Wix? I was thinking that specifying the source would list your application's install/uninstall process under that source in the event log so it would be easy to filter/check but even after doing that the source shows up as MsiInstaller for me. What am I doing wrong or am I misunderstanding the use of util:EventSource?
Here is my code :
<Component Id="EventLogSettings" Guid="A456420B-21E7-4306-904E-5CD3822193F0">
<util:EventSource Log="Application" Name="WixSample" SupportsErrors ="yes" SupportsInformationals ="yes" SupportsWarnings ="yes" EventMessageFile="%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\EventLogMessages.dll" KeyPath="yes"/>
<!--<?if $(var.Platform) = x64 ?>
<util:EventSource Log="Application" Name="WixSample" EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR64]EventLogMessages.dll" KeyPath="yes" />
<?else ?>
<util:EventSource Log="Application" Name="WixSample" EventMessageFile="[NETFRAMEWORK20INSTALLROOTDIR]EventLogMessages.dll" KeyPath="yes" />
<?endif ?>-->
</Component>
As you can see I tried two options. Each of them creates a registry entry in the Computer\HKLM\SYSTEM\CurrentControlSet\services\eventlog\Application\WixSample but I am not sure if I need to reference the WixNetFxExtension. If I do then what about installation of non .net application? What do I do in those cases?
You are misunderstanding EventSource. EventSource is used to create a custom source for your application to use in it's logging to the windows event log.
You will always see the install/uninstall of your application show up as MsiInstaller.

Resources