Search code examples
.netwindows-installercommand-line-argumentssetup-project

.net setup project force repair


I am allready working a day or so on this probem and fail to figure it out.

So I have a .Net setup project with bootstrap setup.exe that I would like to "force reinstall" from command line I see in the command line parameters that there is a switch for that:

Windows ® Installer. V 5.0.7601.17514 

msiexec /Option <Required Parameter> [Optional Parameter]

Repair Options
    /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
        Repairs a product
        p - only if file is missing
        o - if file is missing or an older version is installed (default)
        e - if file is missing or an equal or older version is installed
        d - if file is missing or a different version is installed
        c - if file is missing or checksum does not match the calculated value
        a - forces all files to be reinstalled
        u - all required user-specific registry entries (default)
        m - all required computer-specific registry entries (default)
        s - all existing shortcuts (default)
        v - runs from source and recaches local package

now if I run the setup.exe as:

setup.exe /fa setupdll.msi it does not whant to work or any other subswicth under the /f tree

Is there anyone that can help with this?

EDIT1: This is working if I run it from the command line:

%windir%\system32\msiexec /fa setupdll.msi

The problem is it dones not do exactly the same as if I run the setup with the gui

The gui repair does the following:

  1. Replace all files
  2. REgisters the new files

The commmand line aproach does the following:

  1. Replace all files But does not register the new dll into gac

Any idea why?


Solution

  • Ok I know this is a hack aproach on everything but my use case is kinda specific and in case someone whanna do the same here is the why and how:

    Synopsis: I have a c$ dll as com object to use it in another programming language and I created this setup to register the dll in the gac.

    The problem is when I changed the dll and even if I put the new Product code and new version of the setup proejct and new version of the dll itself it did not get updated by the Visual studio setup project.

    If I just do a repair with /ra it does not work if no version of the product is yet installed

    My workaround / hack

    Uninsatll the product by the /x setupdll.msi /passive 
    Install the new version
    

    Well I know it is very specific problem so I don't there is much use for this but combining some stuff ends up with wierd solutions :(

    Anyway in case anyone has the same problem.