Добавление аргументов в ярлык на основе значений из переменных не работает - PullRequest
0 голосов
/ 12 января 2012

У меня есть приложение 2006 года, для которого мне нужно создать установщик. Для правильной работы приложения к аргументам ярлыка необходимо добавить экземпляр SQL Server и имя базы данных.

Проблема, с которой я столкнулся, заключается в том, что значения моей переменной не заполняют аргументы ярлыка.

Из журнала установки я вижу, что значения переменных заполняются из настраиваемого диалогового окна, и я вижу создание ярлыка, но аргументы не добавляются.

<?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>

Есть идеи, что я делаю не так?

1 Ответ

2 голосов
/ 12 января 2012

<?define?> создает переменную препроцессора, которая разрешается во время сборки.Вы хотите свойство, которое является концепцией времени выполнения.Используйте <Property>, сделайте его общедоступным с помощью идентификатора всего в верхнем регистре и установите для атрибута Secure значение yes, чтобы распространять его из пользовательского интерфейса во время выполнения установки.

...