Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7401425
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 29, 20262026-05-29T04:27:53+00:00 2026-05-29T04:27:53+00:00

I am working on a project that uses WIX to install an application. One

  • 0

I am working on a project that uses WIX to install an application. One of the requirements is to remove the old version before installing the current one. The old version is not MSI-based, it is created with SetupApi (which relies on inf files).

I figured this can be achieved with a custom action, the logic is as follows:

  1. look for the “ancient” version in HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\%NAME% and extract the UninstallString value if possible
  2. If the value is set, run a custom action that will execute that command, usually it is a string like RunDll32 advpack.dll,LaunchINFSection C:\PROGRA~1\PROGRAM\file.inf, DefaultUninstall
  3. This action must be executed before installing the program, because they have shared files and registry keys. If the custom action is executed at the end of the MSI installation, it will break the program

My questions are:

  1. Is this the recommended way of removing old, INF-based programs?
  2. Is there a way to uninstall INF-based programs silently? Otherwise the user experience will be pretty bad – a person is installing a program, and suddenly they see an “uninstalling program” window. This is counter intuitive. [resolved by adding “,3” to the uninstall command]

In case you’re interested, here are the code snippets that do what I described above:

<Property Id="ANCIENTVERSION">
  <RegistrySearch Id="RegistrySearchAncientVersion" Type="raw"
     Root="HKLM" Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Program" 
     Name="UninstallString" />
</Property>

<CustomAction Id="removeAncientVersion"
        Directory="SystemFolder"
        <!--ExeCommand="[ANCIENTVERSION]"  regular uninstall-->
        ExeCommand="[ANCIENTVERSION],3" <!--silent uninstall-->
        Execute="immediate"
        Return="check"/>

<InstallExecuteSequence>
  <Custom Action='removeAncientVersion' After='InstallValidate'>ANCIENTVERSION</Custom>
</InstallExecuteSequence>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-29T04:27:55+00:00Added an answer on May 29, 2026 at 4:27 am

    After some research I found that in order to run a silent uninstall, one needs to add “,3” to the end of the UninstallString command line. I tested it and it works:

    Regular uninstall

    RunDll32 advpack.dll,LaunchINFSection C:\PROGRA~1\PROGRAM\file.inf, DefaultUninstall
    

    Silent uninstall

    RunDll32 advpack.dll,LaunchINFSection C:\PROGRA~1\PROGRAM\file.inf, DefaultUninstall,3
    

    As for the first question – since the uninstallation mechanism is the equivalent of clicking “Uninstall” in Add/Remove programs, I believe it can’t get any cleaner/better than that.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm working on a project that uses an MDI application with a navigation panel
I'm working on a project that uses SVG with Raphael.js . One component is
I have a project that uses totoiseSVN. Before upgrading it to 1.7 version all
I am working on a project that uses conflict.dll version 6.2, but the project
I am working on a project that uses the asp.net ajax control toolkit and
I am working on a project that uses a queue that keeps information about
I'm working on a project that uses several languages: SQL for querying a database
I'm working on a project that uses the new CSS3 transform:rotate(180deg) feature. Every modern
I am working on a project that uses Java Swing. The default look and
So I am working on a project that uses a ASP.NET server and we

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.