ClickOnce を使用して公開したい Winforms アプリケーションがあります。このアプリケーションには初期データベースが付属しており、マシンごとに 1 回インストールする必要があります。苦労の末、カスタム前提条件を使用して .sdf ファイルをインストールするというアイデアにたどり着きました。Bootstrapper Manifest Generator (BMG) を使用して、実行したい .cmd ファイルのパッケージを作成し、.sdf ファイルを「追加ファイル」として含めました。
私の期待は、2 つのファイルが同じディレクトリに配置され、.sdf ファイルを必要な場所にコピーできることでした (それらは同じディレクトリに配置されます)。前提条件が表示されます。 Visual Studio では問題ありません。クライアント システムに正常に展開され、セットアップ プログラムによって前提条件が正常に開始されます。
唯一の問題は、.cmd ファイルが実行されている現在の作業ディレクトリが C:\Documents and Settings\\Desktop であることです。
2 つのファイル (.cmd または .sdf) のどちらもそこにはありません。たとえば、「C:\Documents and Settings\drogers\Local Settings\Temp\VSD5A.tmp」などの場所にダウンロードされています。したがって、どこに xcopy するかはわかっていますが、どこから xcopy するかはわかりません。
どうすればこれを解決できますか?
.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
ありがとう、デビッド