【问题标题】:.net setup project force repair.net 设置项目强制修复
【发布时间】:2014-03-05 03:34:29
【问题描述】:

我已经在这个问题上工作了一天左右,但未能弄清楚。

所以我有一个带有 bootstrap setup.exe 的 .Net 安装项目,我想从命令行“强制重新安装”我在命令行参数中看到有一个开关:

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

现在如果我运行 setup.exe 为:

setup.exe /fa setupdll.msi 它不能工作或 /f 树下的任何其他子开关

有人可以帮忙吗?

EDIT1: 如果我从命令行运行它,这是有效的:

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

问题是它与我使用 gui 运行设置的方式不完全相同

gui 修复执行以下操作:

  1. 替换所有文件
  2. 注册新文件

命令行方法执行以下操作:

  1. 替换所有文件 但不会将新的 dll 注册到 gac 中

知道为什么吗?

【问题讨论】:

    标签: .net windows-installer command-line-arguments setup-project


    【解决方案1】:

    好的,我知道这是对所有事情的 hack 方法,但我的用例有点具体,如果有人想这样做,这里是为什么和如何:

    简介: 我有一个 c$ dll 作为 com 对象,可以在另一种编程语言中使用它,我创建了这个设置来在 gac 中注册 dll。

    问题是当我更改 dll 时,即使我放置了新产品代码和新版本的 setup proejct 以及新版本的 dll 本身,Visual Studio 安装项目也没有更新它。

    如果我只是使用 /ra 进行修复,如果尚未安装产品版本,则它不起作用

    我的解决方法/破解

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

    嗯,我知道这是一个非常具体的问题,所以我没有太多用处,但结合一些东西最终会得到奇怪的解决方案:(

    万一有人遇到同样的问题。

    【讨论】:

      【解决方案2】:

      您假设 setup.exe 引导程序也是用于修复已安装产品的通用工具,但事实并非如此。如果您尝试重新安装 MSI 文件,它将使您进入修复模式,但修复不是重新安装。修复不会“替换所有文件”。它修复现有产品(由 ProductCode 定义)。

      术语“强制重新安装”有点模糊,因为如果您指的是安装新版本的 MSI,那么您在构建新的 MSI 文件时使用 RemovePreviousVersions;如果您想修复它,请使用 msiexec 命令行和 /f 以及您需要的任何其他选项来执行此操作。

      我怀疑您真正拥有的是新版本的 MSI 文件及其内容,这意味着您需要增加需要更新的文件的文件版本(VS 2008 及更高版本),这可能很有用:

      https://www.simple-talk.com/dotnet/visual-studio/updates-to-setup-projects/

      【讨论】:

        猜你喜欢
        • 2011-03-01
        • 2016-11-24
        • 1970-01-01
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 2013-09-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多