2015-10-05 337 views
20

我編寫了一個在Framework 4.0上運行並在VS 2015中運行的Windows服務。 我還創建了一個安裝項目(免費Installshield版本)。安裝自定義Windows服務時出現錯誤1001

我的服務在安裝後沒有顯示在services.msc下,所以根據其他一些帖子,我必須在InstallShield中將主輸出標記爲'安裝程序類',但是當我這樣做時,我會收到錯誤1001運行setup.exe。

post指出「錯誤代碼1001總是意味着安裝程序類自定義操作失敗。」並且我不應該使用自定義操作。我目前沒有使用任何自定義操作。

大多數本網站上的解決方案的有2010 InstallShield說明,併爲2015年

該錯誤在我的兩個開發計算機以及所有客戶端計算機上的步驟不起作用。 有什麼建議嗎?

編輯:

未能創建還原點事件查看器顯示」(過程= C:\ Windows \ System32下\ MSIEXEC.EXE/V;描述=安裝在我的應用名稱;錯誤= 0x80070422)。

回答

0

我發現了一些可以擺脫問題的東西,但它的確創造了一個新問題,儘管這個問題簡單得多,也不太重要。

是什麼原因造成我的問題是,我不得不從我的ServiceInstaller的AfterInstall刪除以下代碼:

new ServiceController(ServiceInstaller.ServiceName).Start(); 

將其加入到自動啓動我的服務,一旦它被安裝。現在我只需手動啓動服務。

7

如果您的生成計算機上安裝了.NET 4.6,則需要限制版的2015版本,以避免InstallShield支持安裝程序類的版本問題(導致1001錯誤的原因很多,所以這個是不是有保證的修補程序。)請注意,2015年的InstallShield限量版不支持Visual Studio中的社區版。

+0

感謝。我已經升級到2015年,但我仍然發現錯誤。 –

0

未安裝有針對性的.NET框架時發生此錯誤。

如果你的目標是相同的開發機器,那麼請檢查該服務(EXE)是否已經在該機器上運行(它不應該運行)。

+0

我針對框架4,它已安裝。不工作。 –

1

因爲我不能發表評論,但我會只是一個答案,你自己接受的答案回答。我知道你問這個問題已經有一段時間了,但是這裏有。

如果你想自動啓動安裝之後就可以轉到步驟3.配置目標系統。選擇服務選項卡。右鍵單擊服務並添加服務。您應該能夠在主輸出中找到任何服務。添加後,您可以選擇與自動啓動等相關的不同設置。希望它可以幫助你。

在一個側面說明,我仍然在尋找答案,我的1001

38

我有此相同的問題。突然升級到VisualStudio 2013和較新的InstallShield LE並構建我的安裝包後,它們將失敗並出現神祕的1001錯誤。

明確的答案

我找到了明確的答案。您無法再在InstallShieldLE中選中「installer class」複選框。 您必須取消選中該項目

爲了打開此對話框,轉到指定應用程序數據>文件並右鍵單擊您的主輸出,然後選擇屬性。

uncheck Installer Class

以前,你必須有它的選擇:現在不得選擇

以前(的Visual Studio 2012,你必須有一個項目選擇或服務安裝之前失敗,這很可怕

現在,您必須轉到InstallShield LE項目中的以下樹項並雙擊服務節點: services node

之後的服務項目出現在左側(有我提到什麼可怕的UX和UI這整個事情是什麼?),然後右擊它,所以你可以添加的服務。

add service

選擇出現添加服務菜單項,你會看到一個表單,允許您設置安裝的詳細信息。

installation details

一旦你做到這一點,重建MSI將工作,這將解決1001錯誤。

原來的InstallShield Devs可能已經解決了這一切都是可怕的浪費。不幸的。

+1

取消選中「主輸出」的「屬性」對話框中的「安裝程序類」複選框。 – badikumar

+0

@badikumar很高興幫助和感謝您添加到答案的add'tl信息。 – raddevus

+0

@daylight謝謝。我解決了錯誤1001,但我得到了錯誤1920 – GSP

3

希望這會幫助你們中的一些人在嘗試安裝使用InstallShield 2015 LE安裝程序項目並將主輸出設置爲安裝程序的.NET Windows服務時遇到錯誤1001。

這是當.NET 4.6安裝在Windows 10

https://flexeracommunity.force.com/customer/articles/en_US/ISSUE/HOTFIX-Install-Fails-With-Error-1001-When-a-NET-Installer-Class-Component-is-Present-in-InstallShield-2015-SP1

+2

請不要在多個問題上發佈相同的答案。如果相同的信息真的回答了這兩個問題,那麼一個問題(通常是較新的問題)應該作爲另一個問題的副本來結束。您可以通過[投票將其關閉爲重複](https://stackoverflow.com/help/privileges/close-questions)來表明這一點,或者如果您沒有足夠的聲望,[舉起一面旗幟]( https://stackoverflow.com/help/privileges/flag-posts)來表明它是重複的。否則,請定製您對此問題的回答,而不要將相同的答案粘貼到多個地方。 – DavidPostill

+0

這產生了一個錯誤:類未註冊。我不確定鏈接的解決方案是否與InstallShield LE 2015兼容。 –

0

我使用VS 2012使用InstallShield LE 2015年針對.NET 4.5,我必須取消選中 「安裝程序類」 一個已知的bug爲它工作。

0

經過一番挖掘之後,我發現安裝程序在嘗試刪除服務時(與您正在安裝的任何相關的服務有關) - AND(服務)不再存在,因此發生錯誤。 我的用例場景 - 從MVS2015開始安裝一個複雜解決方案,該解決方案也包含一個Windows服務。 當您更改解決方案的版本時,安裝程​​序將停止其跟蹤,發現您的應用程序之前已安裝,並且因爲它是不同的版本而無法卸載它。它彈出一個對話框,說明這一點,然後退出....但它沒有安裝該服務。 現在嘗試安裝或卸載失敗並顯示錯誤1001,因爲Windows沒有找到要卸載它的服務。

如果有人有更好的解決方案,請發佈它,但我的解決方案是使用sc命令行實用程序。 sc是一個可用於從命令行操作服務的實用程序(鍵入sc尋求幫助)。所以我使用sc來添加服務(按名稱),然後我可以卸載,或像平常一樣安裝。命令中必須有一個有效的bin路徑 - 但任何有效的路徑都將被接受。

sc <server> create [service name] [binPath= ] <option1> <option2>... 

實施例:

sc create MyService binPath= C:\Windows\explorer.exe 
[SC] CreateService SUCCESS 
相關問題