UPDATE:Wix - SQL квадратные скобки в бинарных файлах
Хотя ответы ниже работают в качестве альтернативных решений, которые я хотел бы упомянуть, что мой первоначальный метод делает на самом деле работы. Просмотрев ответы ниже, я узнал, что мой вызов Session.Log() фактически удалял [...], когда он был отправлен в файл журнала. Квадратные скобки остались в моем SQL, поскольку я подал его в объект SQLCommand. Моя проблема заключалась в том, что SQL (из которых я только разместил первые несколько строк) имел «GO» в нем, которые не являются командами SQL. После того, как я решил, что проблема все работало :)
* (Напомним, что размещение как можно больше информации, насколько это возможно всегда полезно: D)
В Wix, я SQL-файлы хранятся в бинарных элементов
<Binary Id="SQLStep1" SourceFile="SourceDir\Step1_SQL_Build.sql"></Binary>
<Binary Id="SQLStep2a" SourceFile="SourceDir\Step2a_SQL_Build.sql"></Binary>
<Binary Id="SQLStep2b" SourceFile="SourceDir\Step2b_SQL_Build_sp_iv6Login.sql"></Binary>
<Binary Id="SQLStep2c" SourceFile="SourceDir\Step2c_SQL_Grant.sql"></Binary>
я затем использовать пользовательское действие, чтобы вытащить из SQL бинарной таблицы и строка замены имени базы данных (при условии, с помощью текстового поля в инсталляторе)
private static string ReplaceDBName(Session session, string binaryKeyName)
{
View v = session.Database.OpenView("SELECT Data FROM Binary WHERE Name = '{0}'", binaryKeyName);
v.Execute();
Record r = v.Fetch();
using (StreamReader reader = new StreamReader(r.GetStream("Data")))
{
string text = reader.ReadToEnd();
text = text.Replace(@"DB_NAME", session["DATABASE_NAME"]);
session.Log("Running SQL: " + text);
return text;
}
}
пример SQL заявление, как это:
USE [master]
GO
/****** Object: Database [DB_NAME] Script Date: 02/23/2010 15:02:47 ******/
CREATE DATABASE [DB_NAME] COLLATE SQL_Latin1_General_CP1_CI_AS
GO
Однако строка я получаю из таблицы «Binary», кажется, вытащить все содержимое [...], как они были WIX Properties, так Я остался с
USE
GO
/****** Object: Database Script Date: 02/23/2010 15:02:47 ******/
CREATE DATABASE COLLATE SQL_Latin1_General_CP1_CI_AS
GO
Есть ли флаг, который я могу установить, чтобы заставить WiX не думать, что синтаксис SQL - это свойства WiX?
Как было указано, для части ведения журнала проблемы вы можете сохранить содержимое, которое хотите войти в свойство. А затем, при необходимости, запишите строку, ссылающуюся на свойство, но поскольку verbose logs уже регистрируют значения свойств, вы, вероятно, можете пропустить эту часть. –