Wix - SQL eckige Klammern in Binärdateien

8

UPDATE:

Während die Antworten unten als alternative Lösungen funktionieren, möchte ich erwähnen, dass meine ursprüngliche Methode tatsächlich funktioniert. Nachdem ich die Antworten unten gelesen hatte, fand ich heraus, dass mein Session.Log () - Aufruf tatsächlich die [...] entkleidete, wenn er in die Protokolldatei gepostet wurde. Die eckigen Klammern blieben in meinem SQL, als ich sie in das SQLCommand-Objekt eingab. Mein eigentliches Problem war, dass die SQL (von der ich nur die ersten paar Zeilen geschrieben habe) 'GO's drin hatte, die keine SQL-Befehle sind. Sobald ich dieses Problem gelöst habe, hat alles funktioniert :)

* (Eine Erinnerung, so viele Informationen wie möglich zu posten ist immer hilfreich: D)

In Wix habe ich SQL-Dateien in binären Elementen gespeichert

%Vor%

Ich benutze dann eine benutzerdefinierte Aktion, um die SQL aus der Binär-Tabelle zu ziehen, und string-ersetzen den Datenbank-Namen (von einem Textfeld im Installer bereitgestellt)

%Vor%

Eine Beispiel-SQL-Anweisung ist wie folgt:

%Vor%

Aber die Zeichenfolge, die ich aus der 'Binary' Tabelle heraushole, scheint den ganzen [...] Inhalt wie WiX Eigenschaften herauszuziehen, so dass ich mit

zurückgeblieben bin %Vor%

Gibt es ein Flag, das ich einstellen kann, damit WiX nicht denkt, dass die SQL-Syntax WiX-Eigenschaften ist?

    
will 14.03.2016, 19:46
quelle

2 Antworten

5

Eckige Klammern in der Binärdatei müssen maskiert werden. Also

%Vor%

Beachten Sie, dass Sie dies zu Ihrem Vorteil verwenden können, indem Sie eine Eigenschaft mit dem Namen DB_NAME festlegen, die dann von WiX in Ihren tatsächlichen Datenbanknamen geändert wird.

Ihre andere Option könnte sein, das Ganze als CDATA zu behandeln, z. B.

%Vor%

Aber ich bin mir nicht sicher, ob das funktionieren würde oder nicht ...

Natürlich können Sie die Binär-Tabelle auch einfach nicht verwenden und stattdessen die Dateien auf andere Weise verpacken. Betten Sie sie direkt in die benutzerdefinierte Aktions-DLL als Ressource ein und ziehen Sie sie dort heraus, wie in Kann ich andere Dateien in eine DLL einbetten? .

    
Dan Field 17.03.2016, 12:44
quelle
2

Ich bin mit WiX nicht vertraut, aber die Eigenschaftssubstitution, die Sie sehen, scheint erklärt zu werden hier .

In SQL Server können Anführungszeichen anstelle von eckigen Klammern für Bezeichner verwendet werden (siehe hier ). ZB:

%Vor%

Ich sehe, dass Ihre Skripte so aussehen, als wären sie generiert worden, aber fragen Sie sich, ob es möglich wäre, sie nach der Generierung nachzubearbeiten, um alle eckigen Klammern für Bezeichner durch Anführungszeichen zu ersetzen, bevor Sie Wix durchlaufen?

    
Steve Chambers 17.03.2016 06:44
quelle

Tags und Links