[wix-users] VSIX Install Falling

rpapo at comcast.net rpapo at comcast.net
Thu Feb 17 12:26:43 PST 2022


Digging through the source code, I find it far more complicated than I
remembered.  We wrote a wrapper around VSIXInstaller.exe.  This wrapper
discovered the real location of VSIXInstaller.exe and also updated the
registry in a way we could use with the bundle script to determine whether
the VSIX had been installed, and if so, what version of it.

    <!-- Check whether VSIX is already installed. -->
    <Variable Name="VSIXInstalled" Type="numeric" bal:Overridable="yes"
Value="0"/>
    <util:RegistrySearch Root="HKLM"
Key="SOFTWARE\XXXXXXXX\VSIXInstallHelper" Win64="yes" Value="XXXXPackage"
Variable="VSIXInstalled" Result="exists"/>

    <!-- Get version of VSIX already installed. -->
    <Variable Name="VSIXVersion" Type="string" bal:Overridable="yes"
Value="12.0.0.0"/>
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\ XXXXXXXX
\VSIXInstallHelper" Win64="yes" Value="XXXXPackage" Variable="VSIXVersion"
Result="value"/>

Later in the script:

      <!-- Install Visual Studio Extension -->
      <ExePackage
        Id="VSIX"
        DisplayName="Visual Studio Extension"
 
SourceFile="..\..\Output\$(var.Configuration2)\VSIXInstallHelper.exe"
        PerMachine="yes"
        InstallCondition="InstallVSIX = 1"
        DetectCondition="VSIXInstalled AND ( WixBundleVersion = VSIXVersion
)"
        InstallCommand="install [WixBundleVersion]
"[WixBundleExecutePackageCacheFolder]\XXXXPackage.vsix""
        RepairCommand="install [WixBundleVersion]
"[WixBundleExecutePackageCacheFolder]\XXXXPackage.vsix""
        UninstallCommand="uninstall [WixBundleVersion]
XXXXPackage.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
        Compressed="yes" 
        Cache="always"
        >
        <PayloadGroupRef Id="DPPackage"/>
        <CommandLine Condition="WixBundleUILevel="2""
InstallArgument="quiet" RepairArgument="quiet" UninstallArgument="quiet"/>
        <CommandLine Condition="WixBundleUILevel="3""
InstallArgument="quiet" RepairArgument="quiet" UninstallArgument="quiet"/>
      </ExePackage>

The VSIX install helper took care of checking the old and new versions of
the VSIX and backing out the old version before installing the new version.

All of this worked simply because our MSI and VSIX versions were the same:
the product version.

-----Original Message-----
From: Coryat, Jim <Jim.Coryat at softprocorp.com> 
Sent: Thursday, February 17, 2022 12:57 PM
To: rpapo at comcast.net; 'WiX Toolset Users Mailing List'
<wix-users at lists.wixtoolset.org>
Subject: RE: [wix-users] VSIX Install Falling

What I meant was what the Bundle and Chain elements looked like.  Were you
able to use out of the box wix elements or did you have to write your own.

I was able to get it to work in an MSI by invoking a type 34 custom action
after InstallFinalize.  Its working consistently thankfully. 

-----Original Message-----
From: rpapo at comcast.net <rpapo at comcast.net> 
Sent: Thursday, February 17, 2022 5:13 AM
To: Coryat, Jim <Jim.Coryat at softprocorp.com>; 'WiX Toolset Users Mailing
List' <wix-users at lists.wixtoolset.org>
Subject: RE: [wix-users] VSIX Install Falling

IMPORTANT NOTICE - This message sourced from an external mail server outside
of the Company.

Yes, though I need to clarify just what you need, as the actual code, though
written by me, belongs to my former employer.  The techniques are public
domain.

If you are referring to signing all this mess, then for us the general
procedure was this:

(1) Sign everything possible before packaging.  That includes .EXE, .DLL,
.SYS, .FON and any other applicable file type.  Drivers started at boot time
are a special case, as they require an extra signing by Microsoft.  Ignore
any files that come from a third party.
(2) Build your main MSI and VSIX files from the signed components.  Sign the
resultant files.
(3) Build your bootstrap application.
(4) Extract the payload from the bootstrap application and sign that.
(5) Reassemble the bootstrap application and sign that.

Let me know what it is you want, precisely, and I can put together an
example in pseudo-code.  I cannot give you my full example, both for legal
reasons, and because we had an elaborate server we used for signing things.
The concept still applies, though.

-----Original Message-----
From: Coryat, Jim <Jim.Coryat at softprocorp.com>
Sent: Wednesday, February 16, 2022 8:01 PM
To: rpapo at comcast.net; 'WiX Toolset Users Mailing List'
<wix-users at lists.wixtoolset.org>
Subject: RE: [wix-users] VSIX Install Falling

Do you have a sample of what the package signature was in the bundle?

-----Original Message-----
From: rpapo at comcast.net <rpapo at comcast.net>
Sent: Wednesday, February 16, 2022 5:53 PM
To: 'WiX Toolset Users Mailing List' <wix-users at lists.wixtoolset.org>
Cc: Coryat, Jim <Jim.Coryat at softprocorp.com>
Subject: RE: [wix-users] VSIX Install Falling

IMPORTANT NOTICE - This message sourced from an external mail server outside
of the Company.

I ran into this problem once upon a time.  The basic problem is that both
MSI and VSIX can invoke the Windows Installer, and it doesn't like to be
invoked recursively.  In my case, I had to handle the VSIX install through
the Bootstrapper Application.

--Rick Papo

-----Original Message-----
From: wix-users <wix-users-bounces at lists.wixtoolset.org> On Behalf Of
Coryat, Jim via wix-users
Sent: Wednesday, February 16, 2022 5:51 PM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Cc: Coryat, Jim <Jim.Coryat at softprocorp.com>
Subject: [wix-users] VSIX Install Falling

I Have an install that installs an SDK for internal consumption.  One of the
components is a .vsix file for VS2019 and/or VS2022

In the component file for the vsix the VsixPackage element looks like this:

<vs:VsixPackage
PackageId="MyVisxPackage.a5326796-1266-4b41-8a6c-0db3d89547f6" />

This fails because it chooses the VS2014 VSIXInstaller.exe which does not
know about any later versions.  That's what I deduced when I executed the
command line at a command prompt and looked in the log file and reviewed the
error.

Looking through the source code I see that the property
VS_VSIX_INSTALLER_PATH contains the location of the VSIXInstaller.exe so I
added a SetProperty similar to what is in the VsixPackage.wks and set it to
the VSIXInstaller.exe that is installed with VS2019/VS2022, using the
location identified in AppSearch using a file search.

This is the error displayed:
MSI (s) (D0:40) [17:43:37:769]: Executing op:
ActionStart(Name=vim925A50D7601FA96A310238BC0296ED40,,)
Action 17:43:37: vim925A50D7601FA96A310238BC0296ED40.
MSI (s) (D0:40) [17:43:37:774]: Executing op:
CustomActionSchedule(Action=vim925A50D7601FA96A310238BC0296ED40,ActionType=3
122,Source=C:\Program Files (x86)\Microsoft Visual
Studio\Installer\resources\app\ServiceHub\Services\Microsoft.VisualStudio.Se
tup.Service\VSIXInstaller.exe,Target=/q  "C:\Program Files
(x86)\SoftPro\Exchange\v3.1\vsix\x86\SoftPro.Exchange.Product.VisualStudio.P
ackage.vsix" /admin,) CustomAction vim925A50D7601FA96A310238BC0296ED40
returned actual error code -2146233088 (note this may not be 100% accurate
if translation happened inside sandbox)

The visx installs running it interactively.  What am I missing?
________________________________
NOTICE: The information contained in this message is proprietary and/or
confidential and may be privileged. If you are not the intended recipient of
this communication, you are hereby notified to: (i) delete the message and
all copies; (ii) do not disclose, distribute or use the message in any
manner; and (iii) notify the sender immediately.



____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant
https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.firegia
%2F&data=04%7C01%7Cjim.coryat%40softprocorp.com%7C7ce775b272f040bbae6508
d9f1fe1796%7C8a807b9b02da47f3a903791a42a2285c%7C0%7C0%7C637806897708750531%7
CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiL
CJXVCI6Mn0%3D%7C2000&sdata=zlrLoIXJtZE6kfR8QeYaSh3LoZc%2Byfn2a1dJZRw%2B8
PA%3D&reserved=0
nt.com%2F&data=04%7C01%7Cjim.coryat%40softprocorp.com%7C6a28aa79f3d14582
423908d9f19f3103%7C8a807b9b02da47f3a903791a42a2285c%7C0%7C0%7C63780648844578
5888%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1
haWwiLCJXVCI6Mn0%3D%7C2000&sdata=LmX7eCq%2BC8NRrVNmcxqMKfCpIX5XjqdHR6k5r
SsATSE%3D&reserved=0



-------------------------------------------------------------------------

This message was secured by Zix(R).




-------------------------------------------------------------------------

This message was secured by Zix(R).





More information about the wix-users mailing list