Создайте локальную базу данных SQL Server из установочного пакета для UWP - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать установочный пакет, который создаст локальную базу данных для моего UWP.В настоящее время я использую NSIS для создания пакета.

Я разработал свой UWP с идеей, что некоторые пользователи могут время от времени использовать планшет или телефон, но приложение будетв основном для настольных компьютеров, а мой установщик предназначен для настольных систем.

Сначала я попытался использовать SQLLocalDB Utility , но обнаружил, что он не поддерживается в UWP.В конце концов я начал использовать медиа-файлы SQL Server для установки SQL Server Express, и я думаю, что именно так я и хочу (я хочу локальную базу данных, которая немного более надежна, чем SQLite, и, похоже, это мой лучший вариант).

Я не знаю, связана ли моя текущая проблема с NSIS или SQLCMD (который я использую в установщике для создания базы данных).Вот часть моего .nsi, которую я использую для создания базы данных:

OutFile "db_installer.exe"
!include psexec.nsh
!include LogicLib.nsh

Section

InitPluginsDir
SetOutPath $PLUGINSDIR
File /r SQLCMD 
ExecWait '"$PLUGINSDIR\SQLCMD\sqlcmd.exe" -S Cmp-000000\SQLEXPRESS -i createdbonfile.sql -o output.txt'
FileOpen $4 "$PLUGINSDIR\SQLCMD\output.txt" r
FileSeek $4 0
ClearErrors
${DoUntil} ${Errors}
    FileRead $4 $1
    DetailPrint $1
${LoopUntil} 1 = 0
FileClose $4

# default section end
SectionEnd

В какой-то момент я получил программу установки, которая хотя бы печатала ошибки SQL.С тех пор я думал, что только удалил некоторые вызовы "DetailPrint".Однако теперь SQLCMD по-прежнему создает выходной файл, но ничего не помещает в него.И, конечно, самая большая проблема заключается в том, что мои команды SQL не выполняются.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Мне удалось успешно создать нужную локальную базу данных с помощью медиа-файлов SQL Server и утилиты SQLCMD (как упоминалось в вопросе).У меня возникла проблема с моим кодом .nsi.Я подумал, что я читаю файл output.txt, который я создал с помощью SQLCMD в инсталляторе, но оказывается, что я на самом деле читал файл, который я сделал во время пробного запуска и случайно загрузил в установщик во время компиляции.С этим пониманием вскоре стало очевидным, что мне не хватает путей к файлам, на которые я ссылаюсь.Вот код снова с соответствующими путями к файлам:

OutFile "db_installer.exe"
!include psexec.nsh
!include LogicLib.nsh

Section

InitPluginsDir
SetOutPath $PLUGINSDIR
File /r SQLCMD 
ExecWait '"$PLUGINSDIR\SQLCMD\sqlcmd.exe" -S Cmp-000000\SQLEXPRESS -i $PLUGINSDIR\SQLCMD\createdbonfile.sql -o $PLUGINSDIR\SQLCMD\output.txt'
FileOpen $4 "$PLUGINSDIR\SQLCMD\output.txt" r
FileSeek $4 0
ClearErrors
${DoUntil} ${Errors}
    FileRead $4 $1
    DetailPrint $1
${LoopUntil} 1 = 0
FileClose $4

# default section end
SectionEnd
0 голосов
/ 26 сентября 2018

Вы можете подключиться к удаленному серверу SQL, например, в Azure.Создание LocalDB из UWP не поддерживается, так как для этого требуется установить LocalDB на целевой машине.

Если вам нужна локальная база данных, то SQLite будет лучшим выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...