Não é possível instalar cópia local do MSI com msiexec, mas pode através da rede com psexec

1

Não sei porque é esse o caso, mas não consigo instalar uma cópia local de um MSI se eu for remoto na máquina no PowerShell com msiexec. Eu recebo este erro:

[computername]: PS C:\temp> msiexec -q -i installer.msi
T h i s   i n s t a l l a t i o n   p a c k a g e   c o u l d   n o t   b e   o p e n e d .     V e r i f y   t h a t   t h e   p a c k a g e   e x i s t s   a n d   t h a t   y o u   c a n  
 a c c e s s   i t ,   o r   c o n t a c t   t h e   a p p l i c a t i o n   v e n d o r   t o   v e r i f y   t h a t   t h i s   i s   a   v a l i d   W i n d o w s   I n s t a l l e r   p 
a c k a g e .

(Eu também não sei por que ele tem o espaçamento extra lá).

No entanto, não tenho problemas para instalá-lo a partir da rede usando psexec assim:

psexec -s \computername msiexec -i -q \networkpath\to\installer.msi

Assegurei-me de que a cópia local não está bloqueada, por isso não sei ao certo o que está causando isso.

Como posso copiar um MSI para a máquina e instalá-lo a partir de uma sessão remota? Ou é psexec a melhor maneira de fazer isso?

    
por supercheetah 31.03.2015 / 19:49

3 respostas

1

Aqui está a resposta que resolveu o problema para mim:

Se você tentou executar o seguinte comando a partir da pasta que contém o arquivo msi:

msiexec /i .\package-to-install.msi /qn

Se você usou a conclusão de tabulação, ( acena em meus braços & sistas do Linux! ) o Power-shell inclui o nome do arquivo com aparência . faz com que a mensagem de erro com espaços estranhos apareça.

Delete the .\ in front of the .msi filename

O comando seria então:

msiexec /i package-to-install.msi /qn

Como referência, esta informação foi encontrada aqui .

    
por 04.04.2018 / 18:06
0

Você está executando uma máquina de 64 bits por acaso? Eu já vi esse problema antes, onde eu estava executando o powershell em um desktop local de 32 bits e executando um MSI Installer de 64 bits em uma rede.

Tente colocar isso no topo do seu script e veja o que acontece:

    if ($pshome -like "*syswow64*") {
    & (join-path ($pshome -replace "syswow64", "sysnative") powershell.exe) -file (join-path $psscriptroot $myinvocation.mycommand) @args
    exit
}
    
por 28.12.2015 / 17:09
-1

Versão corrigida:

psexec -s \computername msiexec /i /q \networkpath\to\installer.msi

Anote /i e /q no lugar de -i e -q .

    
por 31.03.2017 / 12:08