Frage

Ich habe eine Anwendung aus der Ära 2006, für die ich ein Installationsprogramm erstellen muss.Damit die Anwendung ordnungsgemäß funktioniert, müssen die SQL Server-Instanz und der Datenbankname zu den Argumenten der Verknüpfung hinzugefügt werden.

Das Problem, das ich habe, ist, dass meine Variablenwerte nicht die Argumente einer Verknüpfung füllen.

Im Installationsprotokoll kann ich sehen, dass die Variablenwerte in einem benutzerdefinierten Dialogfeld ausgefüllt werden, und ich kann sehen, dass die Verknüpfung erstellt wird, aber die Argumente nicht hinzugefügt werden.

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

Irgendwelche Ideen, was ich falsch mache?

War es hilfreich?

Lösung

<?define?> erstellt eine Präprozessorvariable, die beim Erstellen aufgelöst wird.Sie möchten eine Eigenschaft, die ein Laufzeitkonzept ist.Verwenden Sie <Property>, machen Sie ihn öffentlich, indem Sie eine ID verwenden, die nur in Großbuchstaben geschrieben ist, und setzen Sie den Secure-Attributwert auf yes, um ihn von der Benutzeroberfläche zur Installationslaufzeit zu übertragen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top