Domanda

Ho una proprietà per se installare i collegamenti che devono essere passati attraverso gli argomenti della riga di comando. Le condizioni sembrano funzionare quando ho impostato le proprietà all'interno del file WXS, ma sembrano essere ignorato quando li impostazione attraverso la linea di comando. Dal registro vedo che sono in fase di:

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'.

Tuttavia, i collegamenti non sono in fase di installazione.

Inoltre, sembra che in quanto hanno bisogno di essere nella loro componente di essere in grado di impostare le condizioni su di loro, non possono più essere pubblicizzati scorciatoie. In che modo si ottiene condizionale installato scorciatoie pubblicizzati?

Codice scorciatoia corrente:

<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 ripetuta per altre scorciatoie

Modifica:

Cercando ciò che Sacha suggerito e aggiungendo la seguente:

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

Ora si installa tutte le scorciatoie anche se sono impostati a 0 sia in xml e sulla riga di comando. La linea di comando che sto passando è:

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

provato a mettere i valori tra virgolette e ancora non va. Non mostrato qui, ma sono riuscito a manipolare la proprietà ALLUSERS di fare i registri per utente o per-machine facendo ALLUSERS = "" o ALLUSERS = "2" Così passa in proprietà dovrebbe essere possibile, ma non sono sicuro di quello che sto facendo male.

È stato utile?

Soluzione

Due cose dal momento che ci sono due domande qui:

  1. annunciati Scorciatoie deve essere nella stessa componente che installa il file cui puntano a. Questo è requried perché il Windows Installer rileva uno Shortcut pubblicizzato al KeyPath del componente. Quindi, non è possibile utilizzare shorcuts pubblicizzati se si desidera loro di essere installato opzionalmente.

Ho un blog post su come creare una scorciatoia e passare la convalida .

  1. Le proprietà che si sta utilizzando necessità di essere contrassegnato sicuro per passare dal processo di interfaccia utente di installazione per il lato server. Per fare questo basta fare

Si noti che non ho aggiunto un attributo Valore. Se si specifica un valore, anche se è 0, allora la vostra INSTALLSTARTMENUSHORCUT valuterà TRUE. A vuoto / non-definita proprietà è FALSE, qualsiasi altro valore è VERO.

Altri suggerimenti

Hai provato la marcatura delle proprietà più sicuro?

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

Guardando la documentazione per il scelta rapida tabella non credo che si può ottenere scorciatoie condizionale pubblicizzati. Otteniamo intorno a questo installando un annunciati collegamento nel menu Start, e un collegamento sul desktop normale.

Se IIRC pubblicità deve scommettere fissato a Sì

Hai visto questo esempio da MindCapers qui , ho avuto problemi con le shorcuts fino a quando ho creato la voce di registro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top