Search code examples
windows-installerinno-setupmicrosoft-store

Published and installed application from Miscrosoft Store gives error 0x8A150049, but it still installs


I created an installer using inno setup and wrapped it in MSI with exemsi. The application was successfully published to the Miscrosoft store and passed validation, but when installing from the store it gives error 0x8A150049, but it still installs. What could be the problem.

MSI configuration attached

<MsiWrapper>
  <Installer>
    <IconFile Detect="" Value="PATH" />
    <Output FileName="PATH" />
    <InstallPrivileges Value="Limited" />
    <PerUser Value="yes" />
    <ElevateExecutable Value="never" />
    <UpgradeCode Value="{CODE}" />
    <ProductId Value="" />
    <Platform Value="x86" />
    <Registration Value="Hidden" />
    <RegistrationWrapped Value="Hidden" />
    <Manufacturer Detect="executable" Value="VALUE" />
    <ProductVersion Detect="" Value="VERSION" />
    <ProductName Detect="executable" Value="NAME" />
    <Comments Detect="" Value="" />
    <Contact Detect="" Value="" />
    <HelpLink Detect="" Value="" />
    <UpdateLink Detect="" Value="" />
    <AboutLink Detect="" Value="" />
  </Installer>
  <WrappedInstaller>
    <Executable FileName="PATH" SuccessCodes="" Impersonate="yes" IncludeFiles="no" CompressionLevel="None" />
    <ApplicationId Value="{CODE}" />
    <Install>
      <Arguments Value="/VERYSILENT /SUPPRESSMSGBOXES">
        <UILevelNone Value="" />
        <UILevelBasic Value="" />
        <UILevelReduced Value="" />
        <UILevelFull Value="" />
      </Arguments>
      <RunBeforeInstall Value="" />
      <RunAfterInstall Value="" />
    </Install>
    <Uninstall>
      <Arguments Value="/VERYSILENT /SUPPRESSMSGBOXES">
        <UILevelNone Value="" />
        <UILevelBasic Value="" />
        <UILevelReduced Value="" />
        <UILevelFull Value="" />
      </Arguments>
    </Uninstall>
  </WrappedInstaller>
</MsiWrapper>

UPD Also some logs on only Admin installation:

-- CUSTOM ACTION -- ReadRegStr: Key=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FOO}, ValueName=UninstallString, 32 bit
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (377) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (378) of type 790531 for thread 1500
-- CUSTOM ACTION -- ReadRegStr: Unable to open key.
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (378) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (379) of type 790531 for thread 1500
-- CUSTOM ACTION -- ReadRegStr: Key=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FOO}, ValueName=UninstallString, 64 bit
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (379) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (380) of type 790531 for thread 1500
-- CUSTOM ACTION -- ReadRegStr: Unable to open key.
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (380) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (381) of type 790531 for thread 1500
-- CUSTOM ACTION -- ReadRegStr: Key=SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FOO}, ValueName=UninstallString, default
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (381) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (382) of type 790531 for thread 1500
-- CUSTOM ACTION -- ReadRegStr: Unable to open key.
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (382) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (383) of type 790531 for thread 1500
-- CUSTOM ACTION -- ModifyRegistry: Error getting UninstallString value from registry.
MSI (s) (64!DC) [10:47:23:698]: Closing MSIHANDLE (383) of type 790531 for thread 1500
MSI (s) (64!DC) [10:47:23:698]: Creating MSIHANDLE (384) of type 790531 for thread 1500
-- CUSTOM ACTION -- Error modifying registry.

And logs for both admin and user installation:

=== Logging stopped: 12.04.2023  10:47:23 ===
MSI (c) (C4:98) [10:47:23:745]: Note: 1: 1708 
MSI (c) (C4:98) [10:47:23:745]: Note: 1: 2205 2:  3: Error 
MSI (c) (C4:98) [10:47:23:745]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1708 
MSI (c) (C4:98) [10:47:23:745]: Note: 1: 2205 2:  3: Error 
MSI (c) (C4:98) [10:47:23:745]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709 
MSI (c) (C4:98) [10:47:23:745]: Product: FOO -- Installation failed.

MSI (c) (C4:98) [10:47:23:745]: Windows Installer installed the product. Product Name: FOO. Product Version: 1.0.0.0. Product Language: 1033. Manufacturer: FOO. Installation success or error status: 1603.

MSI (c) (C4:98) [10:47:23:745]: Grabbed execution mutex.
MSI (c) (C4:98) [10:47:23:745]: Cleaning up uninstalled install packages, if any exist
MSI (c) (C4:98) [10:47:23:760]: MainEngineThread is returning 1603
=== Verbose logging stopped: 12.04.2023  10:47:23 ===

Solution

  • I found solution. For some reason, inno setup adds the prefix _is to the product guid. For example, I create inno installator with GUID

    c37c9475-365f-402b-8aa4-e225eef8d623

    but in registry it registered as

    c37c9475-365f-402b-8aa4-e225eef8d623_is

    and now MSI wrapper can't find it for creating uninstaller. So when using MSI wrapper you need to take this into when filling out the GUID field