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/

相關問題