2012-11-07 25 views
1

存在主要問題。我讀到Rob M說盡可能使用Guid="*",所以我把所有的Guid都改成了這個。儘管現在卸載我的產品已經搞亂了。這些文件已成功刪除,但快捷方式,服務和註冊表不是。請幫助更改GUID - 現在卸載不能正常工作

這是我的服務:

<Component Id="service" Guid="*"> 
    <File Id="service.exe" Name="service.exe" KeyPath="yes" Source="$(var.Bin)\service.exe"/> 
    <ServiceInstall Id="service.exe" Name="[PRODUCTNAME]" Description="[ProductName]" Account="[SERVICEACCOUNT]" Password="[SERVICEPASSWORD]" Arguments=" /start [ProductName]" Start="auto" Interactive="yes" Type="ownProcess" Vital="yes" ErrorControl="critical" /> 
    <ServiceControl Id="service.exe" Name="[PRODUCTNAME]" Stop="both" Start="install" Remove="uninstall" Wait="no"/> 
    </Component> 

這是卸載日誌:

Service ''() could not be stopped. Verify that you have sufficient privileges to stop system services. 

MSI (s) (DC:D0) [14:25:02:018]: Executing op: ActionStart(Name=DeleteServices,Description= 
Deleting services 
,Template= 
Service: [1] 
) 
    MSI (s) (DC:D0) [14:25:02:018]: Executing op:  ProgressTotal(Total=2,Type=1,ByteEquivalent=1300000) 
MSI (s) (DC:D0) [14:25:02:018]: Executing op: ServiceControl(,,Action=8,Wait=0,) 
MSI (s) (DC:D0) [14:25:32:064]: Executing op: ServiceControl(,Name=OPC,Action=8,Wait=0,) 


Info 1922. 

Service ''() could not be deleted. Verify that you have sufficient privileges to remove system services. 

它不是拿起名字,誰知道它爲什麼要這麼做?

+0

這是否屬於您製作的產品?或者您是否更改了您安裝的其他人的程序? – hexafraction

+0

@ObsessiveSSOℲ這是我自己的產品,我正在創建一個安裝程序。 –

+0

好的。我真的不知道,但這個信息可以讓這個問題從downvoted /關閉/等等,如果你編輯ias很多信息,你可以進入帖子。 – hexafraction

回答

1

您的財產「PRODUCTNAME」是如何定義的?如果它不是一個常量,請確認它是在卸載序列期間執行的初始化操作

+0

此外,據我所知,[ProductName]和[PRODUCTNAME]是不同的屬性:第一個是私人的,第二個是公共的。它是否應該在你的安裝程序中使用它們?至於我看起來很混亂 –

+0

嗨,'[PRODUCTNAME]'是通過一個自定義的Action設置的,它被設置爲運行安裝和卸載,但我會明確地設置它爲卸載,看看是否有所不同。謝謝 –

+0

請查看詳細日誌,並查看在發生錯誤之前是否真正執行了此自定義操作。也許你計劃卸載階段的這個自定義操作太遲。您能否將此自定義操作聲明添加到問題中? –

3

首先第一個問題:

  • 你是否已經發布了一個版本的產品?如果是這樣,更改組件GUID可能會嚴重違反組件規則,所以一旦發佈,您就不應該更改它們。如果它只存在於您的測試機器上,那並不重要。
  • 您是否將您的測試機器重置爲違反組件規則不會影響卸載,或者您是否試圖在卸載失敗之前執行某種升級?
  • 來自卸載的詳細MSI日誌表明什麼?
+0

不,它還沒有發佈。正如你在問題二中所說的那樣,如何重置我的機器?我現在將運行詳細日誌並粘貼相關部分。 –

+0

我編輯了我的問題。謝謝 –

+0

通常要重置測試機器,您應該使用虛擬機主機的恢復功能。那是什麼,你沒有使用虛擬機?開始這樣做。否則,如果你想要一個真正乾淨的環境,你必須求助於像MSIZAP這樣的工具(它只會刪除記錄,而不是真實的數據),甚至重新安裝Windows。 –

0

MSIZAP將是消除安裝程序安裝在機器上的所有內容的最終方法。我建議您測試一下您正在嘗試做什麼的概念,並在所有安裝測試中使用VM。