Sto provando a scrivere una finestra di dialogo personalizzata per WiX che, come parte del flusso di lavoro, mostra un'immagine di errore in risposta a determinate condizioni. Comunque, WiX sembra ignorare le mie dimensioni e mostrarle come meglio si adatta. Ecco il mio codice:WiX non esegue correttamente il rendering delle immagini
<Binary Id="WixUI_FailureImg" SourceFile="$(sys.SOURCEFILEDIR)..\Resources\Failure.ico" />
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="206" Width="16" Height="16" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
ho incluso un frammento della finestra di dialogo risultante di sotto, con l'immagine originale (un .ico 16x16) in background. Come puoi vedere, l'immagine è stata ridimensionata verso l'alto e non c'è trasparenza intorno all'immagine. Ho provato anche le icone bitmap a 8 e 24 bit, ma tutte producono lo stesso risultato. C'è qualcosa che sto facendo ovviamente sbagliato?
UPDATE:
Nel caso ve lo stiate chiedendo come le immagini opere dinamiche, ecco la sezione pertinente:
<Control Id="TestResult_Success" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_SuccessImg">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestPrompt_Success" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionValid)">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
<Control Id="TestPrompt_Failure" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionInvalid)">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
Come si può intuire dallo screenshot, la pagina è legato alla creazione di una connessione SQL; Ho un'azione personalizzata che crea una stringa di connessione in base all'input dell'utente e tenta di convalidarlo. Se è valido (LOGON_VALID = "1"
), ottengo un'immagine di spunta e del testo per dire che tutto va bene, altrimenti ricevo un'icona di avviso e del testo per avvisare l'utente. Naturalmente, il pulsante Avanti è anche controllato da questo valore.
chiedendo una domanda separata ... curioso di sapere ... stai cambiando l'immagine in modo dinamico? Voglio dire l'immagine apparirà come da condizione? –
Sì; quindi c'è un controllo TestResult_Success che mostra un segno di spunta verde se LOGON_VALID = 1 e lo nasconde se LOGON_VALID = 0. Le immagini hanno le stesse dimensioni e nella stessa posizione. –
puoi condividere qualche codice per aggiornare dinamicamente l'immagine? –