2013-03-13 65 views
2

當我使用msi進行修復時,正確地重新創建了註冊表項。當使用由Burn生成的exe文件時,不會重新創建該條目,除非與reg條目相關聯的exe文件也需要進行比較。wix將選項傳遞給msi進行修復

我不知道燒傷時調用msi是否覆蓋msiexec的默認/ fm行爲。 該開關意味着「修復所有需要的計算機特定的註冊表項」

有什麼方法可以確認,否認或修改該行爲?

回答

2

當在燒傷中規劃「修復」操作時,REINSTALLMODE是「cmuse」。對於「修改」操作,REINSTALLMODE是「cmuso」。所以在這兩種情況下都存在「m」。

燒傷日誌文件應該說,「規劃行動:行動」,這將告訴你它在做什麼。如果您正在執行修復操作,並且計算機上的可執行文件的版本不是您的MSI預期的,那麼Burn的REINSTALLMODE應該可以正常工作。如果您正在執行「修復」,請查看生成的MSI日誌文件以查看相同的刻錄執行情況,並查看未修復的組件的組件狀態。這應該可以幫助你追蹤組件未被修復的原因。

從提供的日誌文件:

Command Line: ARPSYSTEMCOMPONENT=1 MSIFASTINSTALL=7 REINSTALLMODE=cmuse 
REBOOT=ReallySuppress IGNOREDEPENDENCIES=ALL CURRENTDIRECTORY=C:\temp 
CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 

缺乏REINSTALL=ALL表明EnableFeatureSelection='yes'。要麼刪除該屬性(或將其更改爲默認的「否」),或者您的廣管局需要處理OnPlanMsiFeature()回調

+0

我是新手,請原諒我的無知,但是..「計劃」一詞不會出現在詳細日誌。這裏有幾個片段可能會提供有用的信息:MSI(s)(30:70)[22:08:41:379]:******* RunEngine: *******產品:{ redcuts} \ Package Cache \ {6E84685B-8BBE-485B-8079-CFA1499A954A} v112.100.5415 \ DataService.generic.x86.msi *******操作: ******* CommandLine:** ********命令行:ARPSYSTEMCOMPONENT = 1 MSIFASTINSTALL = 7 REINSTALLMODE = cmuse REBOOT = Really Suppress IGNOREDEPENDENCIES = ALL CURRENTDIRECTORY = C:\ temp CLIENTUILEVEL = 3 MSICLIENTUSESEXTERNALUI = 1 – 2013-03-14 02:14:58

+0

這就是MSI日誌文件。 「計劃」步驟將​​位於捆綁日誌文件中。 – 2013-03-14 05:31:29

+0

此外,如果這是MSI的詳細日誌文件,那麼REINSTALL = ALL缺失,這意味着您可能在MsiPackage上設置了EnableFeatureSelection ='yes'。文檔提到,「管理特徵選擇需要特別小心」。如果您不小心管理功能狀態,那麼這也可以解釋您所看到的問題。 – 2013-03-14 05:33:02