Pregunta

Tengo una aplicación de la era 2006 para la que necesito crear un instalador.Para que la aplicación funcione correctamente, es necesario agregar la instancia de SQL Server y el nombre de la base de datos a los argumentos del acceso directo.

El problema que tengo es que los valores de mis variables no completan los argumentos de un atajo.

Desde el registro de instalación, puedo ver que los valores de las variables se completan desde un cuadro de diálogo personalizado y puedo ver el acceso directo que se crea, pero los argumentos no se agregan.

<?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="&amp;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="&amp;Database Name:" />
    <Control Id="DatabaseEdit" Type="Edit" X="45" Y="122" Width="220" Height="18" Property="$(var.DatabaseName)" Text="[DatabaseName]" />
    <!-- more stuff here-->
</Dialog>

¿Alguna idea de lo que estoy haciendo mal?

¿Fue útil?

Solución

<?define?> crea una variable de preprocesador, que se resuelve en el momento de la compilación.Quieres una propiedad, que es un concepto de tiempo de ejecución.Use <Property>, hágalo público usando un Id que esté en mayúsculas y establezca el valor del atributo Secure en yes para propagarlo desde la interfaz de usuario al tiempo de ejecución de instalación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top