Aggiunta di argomenti a valori basati su scorciatoie da variabili non funzionanti
-
27-10-2019 - |
Domanda
Ho un'applicazione dell'era 2006 per la quale devo creare un programma di installazione.Affinché l'applicazione funzioni correttamente, è necessario aggiungere l'istanza di SQL Server e il nome del database agli argomenti del collegamento.
Il problema che sto riscontrando è che i valori delle mie variabili non popolano gli argomenti di una scorciatoia.
Dal registro di installazione, posso vedere che i valori delle variabili vengono popolati da una finestra di dialogo personalizzata e posso vedere il collegamento che viene creato ma gli argomenti non vengono aggiunti.
<?define SqlServerInstance="SqlServerInstance" ?>
<?define DatabaseName="DatabaseName" ?>
<Component Id="LWS" Guid="0FB32FAD-83B2-4C0B-B929-C93220E4681A">
<File Id='LwsEXE' Name='Lws.exe' DiskId='1' Source='..\files\lws\Lws.exe' KeyPath='yes'>
<Shortcut Id="startmenuLWS" Directory="ProgramMenuFolder" Name="LWS" WorkingDirectory='INSTALLDIR' Icon="LWS.ico" IconIndex="0" Advertise="yes" Arguments="[SqlServerInstance] [DatabaseName]" />
<Shortcut Id="desktopLWS" Directory="DesktopFolder" Name="LWS" WorkingDirectory='INSTALLDIR' Icon="LWS.ico" IconIndex="0" Advertise="yes" Arguments="[SqlServerInstance] [DatabaseName]" />
</File>
</Component>
<Dialog Id="DatabaseLocationDlg" Width="370" Height="270" Title="[ProductName] Database Connection [Setup]" NoMinimize="yes">
<Control Id="ServerNameLabel" Type="Text" X="45" Y="73" Width="100" Height="15" TabSkip="no" Text="&SQL Server Name:" />
<Control Id="ServerNameEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="$(var.SqlServerInstance)" Text="[SqlServerInstance]" />
<Control Id="DataBaseLabel" Type="Text" X="45" Y="110" Width="100" Height="15" TabSkip="no" Text="&Database Name:" />
<Control Id="DatabaseEdit" Type="Edit" X="45" Y="122" Width="220" Height="18" Property="$(var.DatabaseName)" Text="[DatabaseName]" />
<!-- more stuff here-->
</Dialog>
Qualche idea su cosa sto sbagliando?
Soluzione
<?define?>
crea una variabile del preprocessore, che viene risolta in fase di compilazione.Vuoi una proprietà, che è un concetto di runtime.Utilizza <Property>
, rendilo pubblico utilizzando un ID tutto maiuscolo e imposta il valore dell'attributo Secure su yes per propagarsi dall'interfaccia utente al runtime di installazione.