Como faço para criar um projeto InstallShield LE para instalar um serviço do Windows?


104

Baixei o Visual Studio 2012 ontem, quando foi lançado no MSDN. Percebi que alguns dos tipos de projetos que tínhamos em 2010 desapareceram ou estão diferentes. A maior diferença para mim agora é a remoção do projeto do Windows Installer. Agora estamos sendo forçados a usar o InstallShield LE (Limited Edition). O problema aqui é que escrevo muitos serviços do Windows e não consigo ver como configurar o InstallShield LE. Parece que nós (minha empresa) teremos que investir em licenças para a edição profissional.

Alguém encontrou uma maneira de instalar serviços no InstallShield LE? Ao usar o projeto do Windows Installer, você apenas define as ações personalizadas.


1
Usar ações personalizadas InstallUtil em projetos de implantação do Visual Studio era, na verdade, uma prática muito ruim. É basicamente reinventar a roda com uma solução frágil porque a ferramenta de autoria subjacente não expôs os recursos nativos do MSI.
Christopher Painter de

Respostas:


161

Para Visual Studio 2012 e InstallShield LE, faça o seguinte:

  • Execute o assistente de projeto InstallShield e inclua a saída principal de seu serviço na seção Arquivos do aplicativo.
  • Depois de terminar com o assistente de projeto, clique duas vezes no item "Arquivos" na etapa dois do projeto de instalação.

Seção de arquivos

  • Clique com o botão direito na saída principal de seu serviço e vá para propriedades.
  • Clique na guia "Configurações de COM e .NET" e marque a caixa de seleção "Classe do instalador". insira a descrição da imagem aqui
  • Clique OK

Agora, depois de criar e executar sua instalação, seu serviço aparecerá no snap-in de Serviços do Windows.

Observe que isso pressupõe que você adicionou um "Instalador de projeto" ao seu projeto de serviço (clique com o botão direito do mouse na folha de design do serviço e clique em "adicionar instalador"). Posso confirmar este trabalho no Windows 8 com Visual Studio 2012 / InstallShield LE.


Ok, isso também funciona no VS 2010 e Win 7 Pro. Ainda não tentei no VS 2012, mas deve bastar. Obrigado.
fizch

3
É possível ter uma caixa de diálogo solicitando ao usuário a string de conexão do banco de dados (servidor, autenticação e nome do banco de dados) e atualizar o arquivo de configuração do serviço do Windows usando o InstallShield LE?
Adelia Benalius

2
Este é um guia muito bom: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty


1
Esta opção não inicia o serviço após a instalação. Para instalar o serviço e iniciá-lo, no Solution Explorer, selecione 3. Configure Target System> Services .
Rajeev

24

Eu instalei recentemente o VS 2012 com Install Shield LE. No início, continuei recebendo um erro interno do servidor ISEXP -5036 após uma compilação (após configurar um projeto ISLE e executar o Install Shield Project Assistant). Acabei descobrindo que ele estava tentando criar o MSI no tipo de mídia DVD-5, que estava falhando. Por alguma razão, criar a solução novamente do zero, de alguma forma, reconhece a construção apenas para os tipos de mídia CD_ROM e SingleImage que funcionam.

De qualquer forma, para retificar o erro 5036, clique na guia Build no VS 2012 (menu superior), selecione o gerenciador de configuração e você verá que seu arquivo de configuração IS está selecionado na configuração do DVD-5. Mude para CD_ROM e clique em Fechar. Depois de construir / reconstruir, ele será concluído sem nenhum erro IS 5036.

insira a descrição da imagem aqui


2
Isso pode não ter nada a ver com o problema dele, mas resolveu o meu. Obrigado! +1
David de

O mesmo problema para mim desde o início, a instalação padrão tinha DVD-5 como configuração e a configuração falhou ao construir. Com sua dica mudei para Imagem Única e construí sem problemas!
Nick Bork

DVD-5 foi selecionado. Resposta simples, mas ótima
beaumondo

6

Embora o uso da caixa de seleção da classe do instalador possa funcionar em alguns casos, você pode enfrentar o seguinte erro:

Erro 1001. O serviço especificado já existe

Aqui está um trecho deste link sobre como resolver esse problema:

Para erro: Erro 1001. O serviço especificado já existe

Este erro ocorrerá se o componente que instala um serviço .NET estiver configurado incorretamente com "Classe do instalador .NET" definida como Sim. O método para instalar um serviço .NET é usar a exibição Component \ Advanced Settings \ Services, não a configuração ".NET Installer Class". Fazer definições na exibição Component \ Advanced Settings \ Services cria entradas nas tabelas ServiceControl e ServiceInstall do Windows Installer. Essas entradas são usadas pela ação "InstallServices" do Windows Installer para instalar o Serviço.


você poderia ajudar e explicar isso .... Component \ Advanced Settings \ Services "view pode ser encontrada ??
pithhelmet

está na edição premier do instalador (ffs! microsoft, por que você retirou o tipo de projeto de instalação!) .. Se você tiver a edição premier. community.flexerasoftware.com/…
Paul Hutchinson

Descobri que está relacionado ao comprimento do nome do projeto de configuração, ou seja, altere o nome do projeto de configuração para algo mais curto, como "Instalar" ou "Configuração".
Jonty

4

Se o seu projeto for .NET, tente usar a classe ServiceProcessInstaller com o InstallShield LE.

Para fazê-lo funcionar com o InstallShield, você deve ir para a árvore de "arquivos" do InstallShield e clicar com o botão direito do mouse em seu arquivo. Em seguida, marque a caixa de seleção "Classe do instalador" na guia "Configurações de COM e .NET".

Eu consegui fazer funcionar, mas tive problemas em alguns sistemas operacionais como o Windows 2008R2. Sua milhagem pode variar.

Aqui está um exemplo: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
Desculpe. Eu não vi isso até hoje. Parece que é praticamente a mesma resposta que aceitei. Vou marcar com +1.
fizch

4

Eu tive todos os tipos de problemas com isso.

Do seguinte modo.

  1. O download do InstallShield leva muito tempo
  2. o processo de registro é uma dor.
  3. as opções de configuração são confusas e excessivamente complexas.
  4. a solução aceita neste segmento é um hack e nem sempre funciona - veja 1001 na documentação - essencialmente, você precisa passar pelo acesso pago para obter as opções de configuração corretas para instalar um serviço do Windows.

Solução para mim, como mencionado em outro lugar - era abandonar o InstallShield

insira a descrição da imagem aqui

Muito fácil desse ponto.

Editar: Atualizar - instale a versão mais recente aqui https://wix.codeplex.com/releases/view/115492 para vs 2013/2015


3

Os projetos de configuração do Visual Studio estão de volta ao VS 2013 como uma extensão do Visual Studio.

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

Atualize sua solução e projetos para o VS 2013. Se você ainda está no VS 2010, provavelmente será melhor atualizar diretamente para o VS 2013.

Minha experiência com o Instalahleild LE é muito peculiar, mas depois que você descobre os truques, é mais fácil de usar. No entanto, acho que a edição limitada é uma forma da Microsoft e do Flexera venderem a edição completa. Em outras palavras, primeiro pagamos muito dinheiro à Microsoft pelo Visual Studio e, em seguida, ao parceiro (no crime) mais pela Facilitiesheild. Estratégia ruim que não deu certo já que eles tiveram que trazer de volta os projetos de instalação no VS 2013.


2

Já escrevi sobre este assunto:

Aumentando o InstallShield usando XML do Windows Installer - Windows Services

Basicamente, você cria um módulo de mesclagem usando WiX para encapsular o serviço e, em seguida, adiciona-o ao seu projeto installshield. (Associe-se ao diretório INSTALLDIR para garantir que seu arquivo vá para onde você espera). Crie e teste em uma VM. Pedaco de bolo.


Outra tecnologia para aprender? Até ontem, eu não tinha ouvido falar do WIX. Ainda não sei nada sobre isso. Parece que todo esse processo está se tornando cada vez mais difícil para algo que costumava levar apenas alguns cliques.
fizch de

Leva apenas alguns cliques para EXECUTAR um instalador. Criá-los sempre foi muito mais difícil.
Christopher Painter de

Também bastou alguns cliques para configurar o instalador. Você tem que digitar o título, o fabricante e etc, mas não precisa criar um documento xml inteiro. O que você pode me dizer sobre o WIX? Posso dizer que você obviamente sabe muito sobre isso. O que é isso? Onde eu consigo isso? Como eu uso isso? Etc ...
fizch em

Escrevo instaladores há 16 anos e apenas instalações simples com um único EXE e atalho levam 'apenas alguns cliques' para criar. De qualquer forma você pode encontrar o WiX no CodePlex e há um livro publicado sobre o assunto. A tecnologia subjacente é o Windows Installer e essa documentação pode ser encontrada no Platform SDK e no MSDN.
Christopher Painter de

5
Sério "existe um livro publicado sobre o assunto ... docs on no SDK". ?? Chris, estamos apenas tentando migrar nossas soluções de 2010 para 2012 e a instalação / configuração está nos impedindo de avançar. MS, traga de volta o VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio/…
JimSTAT


2

Acabei de ter alguns problemas para descobrir onde adicionar o instalador, conforme referido na resposta. Então aqui está como.

Clique duas vezes em sua classe de serviço dentro de seu projeto de serviço do Windows Uma tela em branco com o texto "Para adicionar componentes à sua classe, arraste-os da caixa de ferramentas e use a janela Propriedades para definir suas propriedades ..." Clique com o botão direito em qualquer lugar menos nos links e selecione "Adicionar instalador"

Até mais


0

Tenha em mente que toda a explicação acima não o ajudará se você planeja criar posteriormente uma atualização dessa configuração. O InstallShiled LE não pode parar o serviço em execução quando você atualiza. Você não pode fazer isso a partir do Windows Service Installer -> evento BeforeInstall.


0

Queria colocar isso aqui;

No VS 2015, ao fazer isso, encontrei o erro 1001 durante a instalação repetidamente.

A resposta nesta página explicou que nas versões mais recentes (qualquer coisa anterior a 2012) , aparentemente você precisa deixar explicitamente a opção da classe do instalador desmarcada e, em seguida, adicionar o serviço do Windows na seção Serviços na Etapa 3 do projeto do instalador:

Erro 1001 ao instalar o serviço personalizado do Windows

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.