Pergunta

Eu tenho uma propriedade para se instalar atalhos que precisam ser passados ??via linha de comando argumentos. As condições parecem funcionar quando eu definir as propriedades dentro do arquivo wxs, mas eles parecem ser ignoradas quando colocá-los através da linha de comando. A partir do log vejo que eles estão sendo definidos:

MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.

No entanto, eles os atalhos não estão sendo instalados.

Além disso, parece que uma vez que eles precisam estar em seu próprio componente para ser capaz de condições definidas sobre eles, eles já não pode ser atalhos anunciados. Como você se condicionalmente instalado atalhos anunciados?

código de atalho atual:

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
  <Condition>INSTALLSTARTMENUSHORTCUT</Condition>
  <Shortcut Id="StartMenuServerShortcut"
    Directory="ProgramMenuDir"
    Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
    Target="[!FileEXE]"
    Icon="Icon.ico" />
</Component>

E repetido para outros atalhos

Editar:

Tentando o que Sacha sugerido e adicionando a seguinte:

<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>

Agora, ele instala todos os atalhos mesmo que está pronto para 0 tanto no xml e na linha de comando. A linha de comando que eu estou passando é:

msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb

tentei colocar os valores entre aspas e ainda não ir. Não é mostrado aqui, mas eu era bem sucedido em manipular a propriedade ALLUSERS para fazer registros por usuário ou por máquina, fazendo ALLUSERS = "" ou ALLUSERS = "2" Então passando nas propriedades deve ser possível, mas eu não tenho certeza do que Eu estou fazendo errado.

Foi útil?

Solução

Duas coisas desde há duas questões aqui:

  1. anunciados atalhos devem estar no mesmo componente que instala o arquivo eles apontam. Isso é requried porque o Windows Installer aponta um shorcut anunciado no KeyPath da Component. Assim, você não pode usar shorcuts anunciado se você quer que eles sejam opcionalmente instalado.

Eu tenho um blog sobre como criar um shorcut e passar na validação .

  1. As propriedades que estão usando necessidade de ser marcado seguro para passar do processo de instalação UI para o lado do servidor. Para fazer isso basta fazê

Observe que eu não adicionar um atributo de valor. Se você especificar um valor, mesmo que seja 0, então o seu INSTALLSTARTMENUSHORCUT irá avaliar como TRUE. Um espaço em branco / não-definido A propriedade é FALSE, qualquer outro valor é TRUE.

Outras dicas

Você já tentou marcar as propriedades tão seguro?

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />

Olhando para a documentação para o href="http://msdn.microsoft.com/en-us/library/aa371847(VS.85).aspx" rel="nofollow Tabela atalho Eu não acho que você pode obter atalhos condicionalmente anunciados. Nós contornar esta situação através da instalação de um atalho no menu Iniciar anunciado, e um atalho no desktop regular.

Se IIRC Anuncie tem de set aposta em Sim

Você tem visto este exemplo de MindCapers aqui , tive problemas com as shorcuts até que eu criou a entrada de registo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top