1

VS 2008 で新しい Visual Studio セットアップ プロジェクトを作成しました。

これを使用して SQLExpress をインストールします。SQLExpress のインストールは、インストーラーの外で手動で行うと正常に動作します。

しかし、インストールすると、SQL Express でアクセス許可に関するエラーが発生します。セットアップ プロジェクトから実行すると、SQLExpress プロセスがシステム アカウントとして実行されていることが原因であることがわかりました。

カスタム アクションと、Process.Start を介してモジュールがインストールされた後に実行される C# コードの両方を介してプロセスを開始しようとしました。ただし、どちらもシステム アカウントとして SQLExpress プロセスを実行します。

現在ログオンしているユーザーとしてではなく、このプロセスを実行するにはどうすればよいですか?

注: calc.exe も起動しようとしましたが、これはシステム プロセスとしても実行されます。インストーラーが実行されているのと同じユーザーのコンテキストで実行されないのはなぜですか?

4

1 に答える 1

4

アプリケーションの前提条件として SQL Server Express をインストールする場合は、それをセットアップおよび展開プロジェクトの前提条件として追加する必要があります。

これを行うには、セットアップ プロジェクトを右クリックし、[プロパティ] -> [前提条件] を選択して、[ SQL Server Express 2008]をチェックします。

前提条件のリストでSQL Server Expressを使用できるようにするには、開発用コンピューターに SQL Server Express をインストールする必要があることに注意してください。

アップデート:

インスタンス名を指定する場合、ブートストラップ パッケージ定義を手動で編集する方法はありません。

Visual Studio 2008 の場合、ブートストラップ パッケージは既定で次の場所に配置されます。

C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages

そこには、SqlExpressという名前のフォルダーもあります。そのフォルダー内で、ファイル en\package.xml を開き、インストーラーのコマンド ライン引数を変更します。ターゲット OS (Win 2000、XP、および 2003+) に応じて、3 つのセクションがあります。

<Command PackageFile="sqlexpr32.exe" 
         Arguments="-q /norebootchk /qn reboot=ReallySuppress addlocal=all 
                    instancename=SQLEXPRESS SQLAUTOSTART=1 ADDUSERASADMIN=1" 
                    EstimatedInstalledBytes="225000000" 
                    EstimatedTempBytes="225000000" 
                    EstimatedInstallSeconds="420">

   ...

</Command>

この変更は、システム上でビルドされている前提条件としてこのパッケージを使用するすべてのインストーラーに影響します。これを望まない場合は、SqlExpress フォルダーをコピーし、SqlExpress\package.xml の ProductCode を更新して、独自の個別のブートストラップ パッケージを作成する必要があります。

于 2009-10-16T17:43:18.627 に答える