У меня есть приложение Winforms, которое я хочу опубликовать с помощью ClickOnce. Это приложение поставляется с начальной базой данных, которую необходимо установить один раз для каждой машины. После долгих раздумий я натолкнулся на идею использования пользовательского предварительного условия для установки файла .sdf. Я использовал Bootstrapper Manifest Generator (BMG) для создания пакета для файла .cmd, который я хочу запустить, и включил файл .sdf в качестве «дополнительного файла».
Я ожидал, что эти два файла окажутся в одном и том же каталоге, и я смогу скопировать файл .sdf в то место, где я хочу (они в конечном итоге окажутся в одном каталоге.) реквизит обнаруживается в Visual Studio просто отлично. Он отлично разворачивается на клиентской системе, и программа установки отлично запускает предварительное условие.
Единственная проблема заключается в том, что текущим рабочим каталогом, который выполняет файл .cmd, является C: \ Documents and Settings \\ Desktop!
Ни один из двух файлов (.cmd или .sdf) не находится там - они были загружены в другом месте, например, "C: \ Documents and Settings \ drogers \ Local Settings \ Temp \ VSD5A.tmp". Итак, хотя я знаю, куда делать копию, я понятия не имею, откуда делать копию.
Как мне решить эту проблему?
Вот файл .cmd:
REM Modify this file to reflect your manufacturer name [FHCRC] and product name [ClickOnceSharedDataDemo].
SET TargetBase=%ALLUSERSPROFILE%
IF NOT "%TargetBase%"=="C:\ProgramData" SET TargetBase=%ALLUSERSPROFILE%\Application Data
REM We only want to do this copy for the first user!
if exist "%TargetBase%\FHCRC\ClickOnceSharedDataDemo\shareddata.sdf" GOTO EXIT
if not exist "%TargetBase%\FHCRC" mkdir "%TargetBase%\FHCRC"
if not exist "%TargetBase%\FHCRC\ClickOnceSharedDataDemo" mkdir "%TargetBase%\FHCRC\ClickOnceSharedDataDemo"
CACLS "%TargetBase%\FHCRC\ClickOnceSharedDataDemo" /E /T /C /G "Users":C
xcopy shareddata.sdf "%TargetBase%\FHCRC\ClickOnceSharedDataDemo\"
if not exist "%TargetBase%\FHCRC\ClickOnceSharedDataDemo\shareddata.sdf" PAUSE
if not exist "%TargetBase%\FHCRC\ClickOnceSharedDataDemo\shareddata.sdf" exit /B -1
:EXIT
PAUSE
exit /B 0
Спасибо,
David