2010-10-06 23 views
0

我正在使用WiX的項目參考特性來自動採用Heat來採集項目。這是非常有用的,因爲WiX安裝程序是在本地和TFS2010構建服務器上構建的,並且當它構建在構建服務器上時,輸出會重定向到不同的位置,這意味着如果我不自動收穫項目,嘗試引用最近編譯的項目的正確位置非常混亂。設置自動採集項目時的關鍵路徑

我有以下WiX的「代碼」,以安裝並啓動服務:

<ServiceInstall Id="MyService" 
Type="ownProcess" 
Vital="yes" 
Name="MyServiceName" 
DisplayName="My Service Display Name" 
Description="My Service Description" 
Start="auto" 
Account="[SERVICEACCOUNT]" 
Password="[SERVICEPASSWORD]" 
ErrorControl="ignore" 
Interactive="no" /> 
<ServiceControl Id="StartService" Name="MyServiceName" Start="install" Wait="no" /> 
<ServiceControl Id="StopService" Name="MyServiceName" Stop="both" Wait="yes" Remove="uninstall" /> 

到目前爲止,一切都很好。我得到一個問題,當安裝程序試圖然而,安裝並啓動Windows服務稱「服務'MyServiceName'(MyServiceName)啓動失敗,請確認您有足夠的權限啓動系統服務」。如果我選擇「忽略」按鈕,安裝將「成功」完成,但是當我檢查安裝在我的機器上的服務時,新服務未列出。

從我的在線調查中,我認爲問題在於服務實際上沒有正確安裝,因爲我需要將KeyPath設置爲應作爲服務運行的可執行文件,但由於我正在收集文件使用熱,我無法找到一種方法來做到這一點...除非我創建一個自定義的動作,將安裝服務,讓我可以指定可執行文件的名稱,一旦所有的文件已經安裝...但這並沒有'聽起來像它應該是正確的解決方案...

有沒有人有任何建議或有他們遇到同樣的問題,並拿出一個解決方案?

感謝

更新07/10/10:在我的WiX的劇本,我有以下幾點:

<Directory Id="INSTALLLOCATION" Name="Dolphin Transfer Service Server" ComponentGuidGenerationSeed="AF89976D-CD66-4b94-911B-1D27F969BC14"> 
    <Component Id="ServiceComponent" Guid="F55415F7-803C-4a83-A677-C0F882699374"> 
     <ServiceInstall Id="DolphinTransferService" Type="ownProcess"... 

和我的收穫文件的目標目錄是INSTALLLOCATION目錄。

看着使用Orca的msi,我可以看到我的ServiceComponent和每個收穫文件的所有生成組件。查看文件表中沒有與此組件關聯的文件(因爲它們爲每個文件都生成了一個組件)。查看ServiceInstall表,它試圖安裝的組件是ServiceComponent。

所以我覺得我需要以某種方式獲得,則ServiceInstall元素是針對服務產生的exe文件,使其安裝此組件作爲一個服務,而不是空「的ServiceComponent」組件的組件裏面?但是由於這個組件是在編譯時生成的,我還沒有設法取得進一步的進展......

回答

0

熱量的輸出是一個WXS創作,每個組件有一個文件。這是默認行爲,不能使用標準熱開關進行更改。這是爲了本地遵循組件規則。

如果某個組件包含單個文件,則該文件自動成爲KeyPath。因此,如果您不轉換熱量輸出並遵守「一個組件 - 一個文件」的規則,這不一定是您獲得錯誤的原因。

我會建議調查詳細的日誌,看看它是否包含你面對的失敗更詳細的描述。

+0

日誌中沒有任何註釋。「操作:安裝」部分包含大量的「設置緩存產品上下文...」類型的消息,然後「注意:1:2228 2:3:錯誤4:SELECT'消息'從'錯誤'WHERE錯誤= 1715」 。然後它說它已成功完成... – VaticanUK 2010-10-07 08:12:58

相關問題