Comment puis-je réparer "projet d'Installation avec de l'action personnalisée fichier non trouvé" exception?
j'essaie de créer un projet de configuration pour un service Windows. J'ai suivi les instructions à http://support.microsoft.com/kb/816169 Créer le projet de configuration sans problème.
je veux pouvoir obtenir une valeur pendant l'installation afin de mettre à jour l'application.config de l'utilisateur paramètres de votre choix. J'ai ajouté un Zones De Texte (Un) dialogue pour récupérer les valeurs. J'ai mis le Edit1Property propriété à "TIMETORUN", et dans mon L'action de sortie primaire est CustomActionData propriété que j'ai mise dans ce qui suit:/TimeToRun="[TIMETORUN]". So far So good. En lançant la configuration je peux récupérer le TimeToRun valeur de l' Contexte.Paramètres recouvrement sans délivrance.
afin de localiser l'application.config je dois aussi passer à la valeur de l' TARGETDIR la propriété Windows Installer à mon action personnalisée. C'est là que les choses commencent à tomber en morceaux. Dans afin d'atteindre cet objectif, le ci-dessus CustomActionData doit être modifié comme suit: / TimeToRun="[TIMETORUN] " / TargetDir="[TARGETDIR]". Maintenant quand je lance l'installation j'ai le message d'erreur suivant:
erreur 1001. Exception survenue lors de l'initialisation de l'installation. Système.IO.FileNotFoundException: ne peut pas charger le fichier ou l'assemblage 'file: / / / C:WindowsSysWOW64Files' ou l'une de ses dépendances. Le système ne peut pas trouver le fichier défini.
si vous googlez ce problème, vous trouverez inévitablement des personnes ayant un énorme succès en ajoutant simplement le slash à la / TargetDir="[TARGETDIR]" partie de la CustomActionData. Cela ne résout malheureusement pas mon problème.
j'ai essayé tellement de variations différentes du CustomActionData chaîne et aucun d'entre eux travaillaient. J'ai essayé l'enregistrement dans un fichier de mon substituée Installer méthode pour déterminer où le bris était, mais aucun fichier journal n'est créé parce qu'il ne va même pas aussi loin. Comme l'indique l'erreur, l'échec se produit pendant l'étape d'initialisation.
j'ai un pressentiment qu'il pourrait être l'une des dépendances que le projet d'installation essaie de charger. Peut-être que quelque chose est ajouté à la CustomActionData chaîne et n'est pas de bien jouer avec le TARGETDIR valeur (qui contient des espaces, i.e. "C:Program FilesMon EntrepriseNom De Projet"). Encore une fois, il s'agit d'un autre pressentiment que je ne semble pas pouvoir confirmer en raison de mon incapacité à déboguer le processus de configuration.
encore une chose à mentionner, et oui c'est une autre intuition, est-ce que cela pourrait être un problème avec les projets D'installation sur la version 64 bits de Windows? Je dirige Windows 7 Professional.
je donnerai les noms des dépendances au cas où cela aiderait:
- Microsoft .NET Framework
- Microsoft.SqlServer.DtsMsg.dll
- Microsoft.SqlServer.DTSPipelineWrap.dll
- Microsoft.SqlServer.DTSRuntimeWrap.dll
- Microsoft.SQLServer.ManagedDTS.dll
- Microsoft.SqlServer.msxml6_interop.dll
- Microsoft.SqlServer.PipelineHost.dll
- Microsoft.SqlServer.SqlTDiagM.dll
comme vous pouvez le déduire des dépendances, le service Windows planifie un appel à un paquet DTSX.
Désolé pour la longue diatribe. Merci pour toute aide que vous pouvez fournir.
2 réponses
La réponse est donc maddeningly simple. Si le dernier argument de CustomActionData contient des espaces et que vous devez donc l'entourer de guillemets et d'une barre oblique, vous devez aussi avoir un espace suivant la barre oblique oblique, comme ceci:
/ TimeToRun="[TIMETORUN]\" / TargetDir="[TARGETDIR]\"
la solution et l'explication peuvent être trouvées ici.
Avait un problème similaire. Dans mon cas, c'était bizarre parce que mon installateur avait fonctionné avec succès une fois, puis j'ai désinstallé mon application via Ajouter/Supprimer des programmes avec succès, j'ai fait du codage (n'a pas touché mon CustomActionData string), et a reconstruit mon projet et mon projet d'installation. C'est quand j'ai relancé mon MSI que j'ai eu cette erreur.
Le codage que j'avais fait a été d'apporter plus de valeurs de plusieurs paramètres, j'avais été précisant dans mon CustomActionData chaîne de caractères. Que syntaxe pour obtenir les valeurs des paramètres (i.e. string filepath = Context.Paramenters["filepath"]
), qui était dans ma classe D'installateur, était en fait très bien, mais comme je l'ai découvert, la syntaxe des derniers paramètres que j'essayais maintenant d'obtenir à partir de mon CustomActionData string n'avait pas été correct, depuis le début. J'avais omis d'ajouter une deuxième citation autour de l'un de ces paramètres, de sorte que rien d'autre ne pouvait être obtenu.
j'utilisais les fenêtres" Textboxes (A) "et" Textboxes (B) " dans la section Interface utilisateur. A a 1 boite,EDITA1
, où j'obtiens le chemin vers un fichier, et B A 2 boîtes,EDITB1
et EDITB2
, pour certains paramètres de base de données. Mon CustomActionData chaîne ressemblait à ceci:
/filepath="[EDITA1]" /host="[EDITB1] /port="[EDITB2]"
:
/filepath="[EDITA1]" /host="[EDITB1]" /port="[EDITB2]"
(fin de la citation sur [EDITB1]
)