0

我已经在这个探测器上工作了一天左右,但未能弄明白。.net安装项目强制修复

所以我有引导的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它不whant工作或/ F树

下的任何其他subswicth是否有任何人能帮助您?

EDIT1: 如果我在命令行中运行它,这是工作:

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

问题是,它多内斯这样做完全一样的,如果我跑了GUI安装

桂修复执行以下操作:

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

的条命令行的形式给出了执行以下操作:

  1. 替换所有文件 ,但不注册新的DLL到GAC

任何想法,为什么?

回答

0

好吧,我知道这是一切黑客攻击的形式给出,但我的使用情况有点特殊,并万一有人whanna这里做同样的是为什么和如何:

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

问题是,当我改变了DLL,即使我把新的产品代码和新版本的安装程序和新版本的DLL本身它并没有得到更新的Visual Studio安装项目。

如果我只是做/ RA修复它不工作,如果没有版本的产品是没有安装

我的解决方法/破解

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

嗯,我知道这是非常特殊的问题,所以我没有太多的使用这个,但结合一些东西结束了奇怪的解决方案:(

无论如何,以防万一任何人都有同样的问题

0

你假设setup.exe引导程序也是一个通用工具,也可以修复已安装的产品,但实际上并非如此。如果您尝试重新安装MSI文件,它会将您发送到修复模式,但修复不是重新安装。修复不会“替换所有文件”。它修复了现有产品(由ProductCode定义)。

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

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

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

相关问题