2015-06-11 37 views
0

我已經花了過去3天就地運行,同時追查在我的系統上強制重新啓動的原因,但最終將其縮小到一個非常具體的原因。我有一個服務套件,我正在Wix中工作。有10個msi全部與燒錄安裝在一起。隨着這10個安裝程序的運行,他們創建依賴於之前安裝的服務。除了在服務啓動並運行時將其卸載以外,此安裝中的所有功能都很好。其他人依賴它的服務告訴Windows重新啓動是必要的,儘管它不是(據我所知)。服務依賴性導致我的wix msi強制重新啓動卸載

使用參數'/ norestart'調用引導程序將停止從自動重新啓動進行無提示卸載,但窗口仍然會以「不要做任何其他事情,直到重新啓動」階段爲好,但並不理想。

有沒有辦法讓我的CulpritServiceInstall.msi物理上無法標記我的機器重新啓動?我知道這可能不是最好的解決方案,但我有90%的人相信重啓標誌是由windows安裝程序設置錯誤的假設(它擔心某些服務需要重新啓動,但它們已從系統中清除)。

我可以發佈我的wix wxs文件給大家,如果有人認爲可以提供幫助。

驗證我的問題:如果依賴服務在卸載期間未運行,則一切正常。看起來卸載在卸載1開始時拍攝了服務狀態的快照,並保留到最後。

編輯:BradFordrg發現我的問題。我以某種方式遠離修正這個問題的正確途徑。我從來沒有嘗試過自己運行憤怒的msi。我總是將其與我的依賴服務配對。我的測試太偏見。我本可以通過掃描msi日誌中的「重新啓動」這個詞來認識我自己,但是顯然沒有。

+0

做一個詳細的卸載日誌,看看它說什麼。另外,你的WiX對停止服務有什麼看法?它有Wait = Yes嗎?服務及其包含過程是否真正關閉?如果服務和包含過程沒有正確消失(並且可能是編碼問題),則Windows需要重新啓動才能刪除它。它還在服務小程序中嗎?如果是的話,它是什麼狀態?也許這個過程還在運行?所以你可以看看更多的東西來處理這個問題。 – PhilDW

+0

這是文件沒有正常離開。好建議。 – Shadoninja

回答

2

重新啓動標誌沒有被設置在錯誤的假設上。

有在安裝程序日誌文件,顯示安裝程序試圖刪除文件不同的地方,但不能因爲這些文件由1個或多個進程鎖定:

592.MSI (s) (B0:58) [12:22:45:305]: Executing op: FileRemove(,FileName=asm-4.1.jar,,ComponentId={4E9A32EC-C065-4BA6-83C8-ADC327C94B12}) 
593.Info 1903.Scheduling reboot operation: Deleting file C:\Program Files\Data Indexer\elasticsearch\lib\antlr-runtime-3.5.jar. Must reboot to complete operation. 

603.MSI (s) (B0:58) [12:22:45:305]: Executing op: FileRemove(,FileName=asm-commons-4.1.jar,,ComponentId={40A5E481-AA7E-45F6-A609-A65F2DFB8902}) 
604.Info 1903.Scheduling reboot operation: Deleting file C:\Program Files\Data Indexer\elasticsearch\lib\asm-4.1.jar. Must reboot to complete operation. 

當這種情況發生的安裝程序將使用How can I force the deletion of locked files in C/C++?中概述的技術將文件標記爲刪除並請求重新引導。

通過安裝程序日誌快速掃描顯示了這些文件被鎖定:

  • C:\ Program Files文件\數據索引\ elasticsearch \ LIB \ ANTLR運行時,3.5.jar
  • C:\ PROGRAM Files \ Data Indexer \ elasticsearch \ lib \ asm-4.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ asm-commons-4.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ groovy-all-2.3.2.jar
  • C:\ Program Files \ D ata Indexer \ elasticsearch \ lib \ jna-4.1.0.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ jts-1.13.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ log4j-1.2.17.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-analysers-common-4.9.1。jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-codecs-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-core-4.9.1。 jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-expressions-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-grouping-4.9.1。罐子
  • C:\ Program Files文件\數據索引\ elasticsearch \ LIB \的Lucene熒光筆-4.9.1.jar
  • C:\ Program Files文件\數據索引\ elasticsearch \ LIB \ Lucene的聯接-4.9.1。罐子
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-memory-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-misc-4.9.1.jar
  • C:\ Program Files文件\數據索引\ elasticsearch \ LIB \ Lucene的查詢-4.9.1.jar
  • C:\ Program Files文件\數據索引\ elasticsearch \ LIB \的Lucene的QueryParser-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-sandbox-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ lucene-spatial-4.9.1.jar
  • C:\ Program Files \ Data Inde xer \ elasticsearch \ lib \ lucene -go建議-4.9.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ spatial4j-0.4.1.jar
  • C:\ Program Files \ Data Indexer \ elasticsearch \ lib \ sigar \ sigar-1.6.4.jar

根據文件類型,我們可以認爲java運行時環境是負責任的。您可以通過使用Microsoft的Process Explorer來確認哪些進程已打開文件。

+0

真棒找到!我會開始挖掘。非常感謝你。 – Shadoninja

相關問題