AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 707787
Accepted
Joel Coel
Joel Coel
Asked: 2015-07-23 14:24:44 +0800 CST2015-07-23 14:24:44 +0800 CST 2015-07-23 14:24:44 +0800 CST

Use o System Center Configuration Manager 2012 para remover o aplicativo InstallShield existente

  • 772

Estou tentando usar o System Center Configuration Manager 2012 para atualizar um programa existente instalado na maioria dos nossos computadores. O programa usa um instalador InstallShield. Somos novos no SCCM aqui, e este programa existe desde muito antes de termos o SCCM disponível.

A nova versão do programa e o instalador não têm nada embutido que eu possa encontrar para detectar ou remover versões antigas. Se você apenas executar o novo instalador sem remover a versão antiga do programa, as coisas parecem boas por um tempo, mas eventualmente você começa a encontrar coisas que não estão certas. O fornecedor recomenda remover manualmente a versão antiga antes de instalar a nova.

Já posso usar o SCCM para implantar a nova versão em uma estação de trabalho limpa. No entanto, neste momento não consigo remover com êxito a versão antiga.

Depois de fazer muita pesquisa, cheguei ao ponto em que gravei um arquivo de resposta para o InstallShield. Usei um arquivo MSI fictício para criar um modelo de instalação para o programa antigo. Em seguida, editei as propriedades de detecção no SCCM para localizar com precisão o programa antigo. Alterei o programa de instalação para um comando fictício que apenas sai e procurei o comando de desinstalação do programa no registro do Windows.

Neste ponto, se eu criar uma implantação de desinstalação do SCCM para este aplicativo fictício, ele detectará corretamente se o programa está instalado ou não. O Centro de Software em minhas estações de trabalho mostrará se está instalado ou não, e a porcentagem de conclusão mostrada no SCCM é precisa. Também posso fazer com que o desinstalador execute scripts arbitrários, desde que todo o script caiba no Uninstall program:campo da guia Programas do tipo de implantação do SCCM para esse aplicativo. Eu só tenho que colocar o comando com algo como cmd /d /c"command goes here".

Se eu editar o comando de desinstalação para o programa não precisar de aspas e colocá-lo dentro dessa sintaxe de comando, posso ver pelo Process Explorer que o desinstalador inicia, mas está oculto em uma área de trabalho privada para a conta do sistema local, onde será espere pela entrada que nunca vem. Parece que preciso informar sobre o arquivo de resposta para concluir a instalação. No entanto, isso apresenta dois problemas.

O primeiro problema é que, se não usar a cmd /d /c"..."sintaxe, não consigo ver se o programa de desinstalação é iniciado, mas se eu usar a sintaxe, não posso incluir o arquivo de resposta, porque ele deve ser colocado entre aspas. Não há como escapar das aspas no programa de desinstalação: campo que preciso usar.

Mesmo se eu contornar esse problema, agora preciso saber como enviar o arquivo de resposta para sistemas individuais. Pelo que vi, não posso usar um compartilhamento de rede para isso, porque o desinstalador será executado como uma conta do sistema local que não terá permissões para nenhum recurso de rede. Se eu pudesse enviar arquivos aleatórios para os computadores, também poderia enviar um script de desinstalação mais complicado... mas isso também deixaria artefatos que ainda preciso de uma maneira de remover.

Já gastei muito tempo com isso e pareço estar batendo em uma parede de tijolos. InstallShield e SCCM são amplamente usados. Certamente não é tão difícil? o que estou perdendo?

sccm
  • 2 2 respostas
  • 2310 Views

2 respostas

  • Voted
  1. Best Answer
    alx9r
    2015-07-23T20:06:32+08:002015-07-23T20:06:32+08:00

    Também posso fazer com que o desinstalador execute scripts arbitrários, desde que todo o script caiba no programa Desinstalar: campo na guia Programas do tipo de implantação do SCCM para esse aplicativo. Eu só tenho que colocar o comando com algo como cmd /d /c"command goes here".

    Padronizei os arquivos em lote para hospedar os comandos para executar a (des)instalação. Portanto, o campo "Instalar programa" indica Install-Application.bat. Isso me permite testar o processo de (des)instalação totalmente separado do SCCM simplesmente executando o arquivo em lote. Então, quando estiver funcionando, posso usar o SCCM para executar esse arquivo em lote com a confiança de que ele será executado da mesma maneira que já testei (supondo que você testou no mesmo contexto que o SCCM usa). Os arquivos em lote são distribuídos junto com os outros arquivos que compõem o conteúdo desse aplicativo.

    agora preciso saber como enviar o arquivo de resposta para sistemas individuais. Pelo que vi, não posso usar um compartilhamento de rede para isso, porque o desinstalador será executado como uma conta do sistema local que não terá permissões para nenhum recurso de rede. Se eu pudesse enviar arquivos aleatórios para os computadores, também poderia enviar um script de desinstalação mais complicado... mas isso também deixaria artefatos que ainda preciso de uma maneira de remover.

    O SCCM cuida da distribuição de conteúdo (incluindo cache e limpeza) para você. Faz um bom trabalho nisso. Acho que você pode estar perdendo o conceito de conteúdo e distribuição para aplicativos SCCM. O SCCM cuidará da distribuição do conteúdo de qualquer pasta UNC que você colocar no campo "Localização do conteúdo" para todos os clientes que precisarem. Descobri que isso funciona de maneira confiável e automática. Minhas pastas de conteúdo geralmente incluem arquivos em lote, instaladores, scripts powershell, arquivos XML, arquivos .msp e quaisquer outras armadilhas de um processo de instalação autônoma.

    Certamente não é tão difícil? o que estou perdendo?

    É tão difícil. Ou pelo menos muitas vezes é. Pode valer a pena afirmar que o SCCM não ajuda na instalação e desinstalação de software. O SCCM realmente lida apenas com a distribuição de software (e faz um bom trabalho nisso). O SCCM depende inteiramente de instaladores e desinstaladores pré-criados para executar essas tarefas. O SCCM não pode ajudá-lo se você ainda não tiver um (des)instalador que funcione da maneira que você deseja. A dor geralmente resulta (para cerca de 60% dos instaladores que vejo) de alguma combinação do seguinte:

    • (des)instaladores que exigem interação do usuário quando você realmente deseja que eles sejam executados sem supervisão (o que AFAIK não é uma maneira fácil de superar para aplicativos nativos)
    • (des)instaladores que instalam para um único usuário, mas precisam de privilégios elevados (o que AFAIK não é uma maneira prática de automatizar)
    • (des)instaladores que pretendem instalar para um único usuário, mas na verdade instalam para o sistema ou vice-versa

    Alguns desses problemas podem ser superados pelo App-V (mas isso não ajudará você a desinstalar seu aplicativo nativo existente). Pelo que posso dizer, no entanto, existem alguns aplicativos cuja instalação e desinstalação simplesmente não podem ser automatizadas de maneira confiável.

    • 2
  2. Steve
    2015-07-25T16:21:03+08:002015-07-25T16:21:03+08:00

    São situações difíceis. Alguns aplicativos installsheild são muito mal construídos e serão executados apenas no contexto do usuário, mas se um usuário não for um administrador local, o processo nunca funcionará. Você pode tentar reclamar com os fornecedores de novos aplicativos.

    Para aplicativos existentes, você pode testar seus scripts de desinstalação da mesma forma que o Configuration Manager os executa. Obtenha psexec em um computador em um prompt de comando administrativo e digite c:\temp\psexec.exe -s -i cmd. O -sé para sistema, -ié para Interativo e cmdé o processo a ser iniciado no contexto do sistema. Na nova janela System cmd, digite os comandos que você está tentando executar e veja se eles realmente funcionam. Se eles não funcionarem, você não poderá usar o CM para executar esses comandos (pelo menos não no contexto do sistema).

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve