![](/img/trans.png)
[英]Repair setup project throws Error 1001: “The specified service already exists”
[英]How do I eliminate “The specified service already exists” when I install new versions of my software?
我有一個VS2008應用程序,其中包括一個服務項目(我稱之為ServiceProject)。 我將安裝項目(InstallationProject)設置為RemovePreviousVersions。 此外, 我為InstallationProject 設置了自定義操作 ,從ServiceProject安裝,提交,回滾和卸載主輸出。
有時,當我構建新版本的安裝程序時,我可以安裝而不會出錯。 通常,當我到達設置服務的位置(在安裝程序中輸入用戶名和密碼)時 - 它會因錯誤“指定的服務已存在”而失敗。
我不知道為什么它不一致,雖然我認為可能有某種服務簽名,如果服務未經修改,它可以成功刪除它,但經過修改后,它無法識別服務。 但是,我很少對服務進行修改,所以我懷疑是這樣的。
如何在沒有此錯誤的情況下使安裝程序成功更新服務? 我的解決方法是手動進入控制面板,卸載以前的應用程序,然后運行安裝程序。
除了確保文件版本不同,StingyJack提到你有另一個問題。 來自VS文檔(抱歉,不在線)
如果已在應用程序的安裝項目中設置了安裝和卸載自定義操作,並且已在Visual Studio 2005中啟用了RemovePreviousVersions屬性,則在升級期間將卸載以前版本的產品。 但是,此行為在Visual Studio 2008中更改如下:
在Visual Studio 2005中,從v1.0.0升級到v1.0.1時,自定義操作的調用如下:
v1.0.0自定義操作卸載()
v1.0.1自定義操作Install()
在Visual Studio 2008中,未調用卸載操作,如下所示:
v1.0.1自定義操作Install()
如果您依賴於舊行為創建了自定義操作,則需要修改新行為的代碼。 此行為更改僅影響更新,而不影響卸載。
因此,您正在使用自定義操作安裝服務 - 但是在升級時,未按預期調用卸載部件,並且您嘗試在現有的正在運行的版本上進行安裝。
我認為當它要求重啟時,因為它無法在運行時更新服務文件。
兩種選擇: -
將代碼添加到“安裝/提交”自定義操作以停止服務,等待安裝程序更換服務文件,然后重新啟動服務。 請參閱PonalSuper3在此主題中的答案
通過使用Orca將InstallExecuteSequence.RemoveExistingProducts更改為緊隨其后的.InstallInitialize - 通常將.RemoveExistingProducts設置為1525, 將VS2008的行為恢復到它在VS2005中的工作方式 (在新版本安裝之前調用舊版本卸載自定義操作)但請檢查您的個人MSI。
將“Not(已安裝或PREVIOUSVERSIONSINSTALLED)”放入“自定義操作” - >“安裝條件”屬性中。
部署每個新安裝程序包時,請確保更改服務的程序集版本和GUID(在AssemblyInfo.vb / cs中)。 如果它檢測到相同版本,則更新失敗。
可能有所幫助,但上述任何與Ryan的答案無關的內容都沒有說明。 在我這樣做之前,同樣的問題發生在我身上:在Orca中打開.msi並找到升級表。 如果previousversion安裝的行(是我的第一個條目)是,您應該看到升級代碼。 找到當前安裝的程序的.msi(要升級的程序),找到升級代碼(可以在orca中執行),然后將其復制並粘貼到新的.msi的升級表中。 這對我有用。
在安裝程序類中嘗試此代碼。 我希望它能解決你的問題。
protected override void OnBeforeInstall(IDictionary savedState)
{
if (LaunchOnBeforeInstall())
{
base.OnBeforeInstall(savedState);
}
else
{
throw new Exception("You cancelled installation");
}
}
public bool LaunchOnBeforeInstall()
{
Form2 frm2 = new Form2();
DialogResult result = frm2.ShowDialog();
if (result == DialogResult.Cancel)
{
return false;
}
else
{
return true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.