2009-10-16 11 views
1

J'ai créé un nouveau projet d'installation Visual Studio avec VS 2008.Projet d'installation Visual Studio - exécuté en tant que compte système

Je l'utilise pour installer SQLExpress. L'installation de SQLExpress fonctionne correctement lorsque je le fais manuellement en dehors de l'installateur.

Mais lorsque j'installe, j'obtiens une erreur dans SQL Express avec les permissions. J'ai découvert que c'est parce que le processus SQLExpress est en cours d'exécution en tant que compte système lorsque je l'exécute à partir de mon projet d'installation.

J'ai essayé de démarrer le processus à la fois via des actions personnalisées et via un code C# qui s'exécute après l'installation d'un module via Process.Start. Mais les deux exécutent le processus SQLExpress en tant que compte système.

Que puis-je faire pour exécuter ce processus à la place de l'utilisateur actuellement connecté?

Remarque: J'ai également essayé de démarrer calc.exe et cela fonctionne également comme processus système. Pourquoi ne fonctionnera-t-il pas dans le contexte du même utilisateur que mon installateur?

+0

Je suis un peu confus. Vous avez créé un fichier MSI uniquement pour installer SQL Express? Alors pourquoi ne pas utiliser le programme d'installation de SQL Express? Ou est-ce que SQL Express est un pré-requis que vous souhaitez installer avant votre application? –

+0

J'installe aussi d'autres exes, mais avant que mon application ne démarre, j'ai besoin d'installer une nouvelle instance de MS SQL Express. –

+0

Comment accomplissez-vous cela?La méthode habituelle consiste à créer une description de package pour le programme d'amorçage et à l'ajouter dans Propriétés -> Pré-requis pour votre projet d'installation et de déploiement. –

Répondre

4

Si vous souhaitez installer SQL Server Express comme prérequis pour votre application, vous devez l'ajouter en tant que prérequis au projet d'installation et de déploiement.

Cela peut être fait par un clic droit sur votre projet de configuration, puis en choisissant Propriétés -> Conditions préalables puis vérifier SQL Server Express 2008.

Notez que pour avoir SQL Server Express disponible dans la liste des composants prérequis, il doit être installé sur votre ordinateur de développement.

Mise à jour:

Si vous souhaitez spécifier un nom d'instance il n'y a pas moyen de contourner la modification manuelle de la définition de package bootstrapper.

Pour Visual Studio 2008, les forfaits BootStrapper sont placés à l'emplacement suivant par défaut:

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

Vous y trouverez également un nom de dossier SqlExpress. Dans ce dossier, ouvrez le fichier en \ package.xml et modifiez les arguments de la ligne de commande pour le programme d'installation. Il y a trois sections en fonction du système d'exploitation cible (Win 2000, XP et 2003+):

<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> 

Cette modification affectera tous les installateurs avec ce paquet comme condition sine qua non qui sont à construire sur votre système. Si vous ne voulez pas que vous deviez créer votre propre module d'amorçage séparé en copiant le dossier SqlExpress et en mettant à jour le ProductCode dans SqlExpress \ package.xml.

+0

Comment spécifier un nom d'instance dans ce cas? Avant de faire cela via les lignes de commande que SQL Express vous donne./INSTANCENAME = MyInstance Je veux déployer une nouvelle instance. –

+0

Merci pour votre aide! –

Questions connexes