2008-11-11 6 views
1

J'ai des répertoires qui sont fournis avec mon installateur et j'ai besoin d'y accéder depuis une action personnalisée. J'ai fait quelques recherches et vu que le SourceDir peut être utilisé pour obtenir l'emplacement du répertoire en cours d'exécution. Cependant, je ne trouve aucun exemple de comment obtenir cette propriété? Ou une autre façon d'obtenir le répertoire actuel?Obtention de la propriété SourceDir à partir d'une action personnalisée C#

Quelqu'un peut-il me conseiller ou me diriger vers autre chose que le site de Microsoft inutile?

+0

Il serait utile de mentionner ce que vous utilisez pour construire les programmes d'installation, WIX, NULLSoft, InstallShield etc ... – CheGueVerra

+0

Il serait également utile de mentionner si votre action personnalisée est différée ou immédiate. – LanceSc

Répondre

1

Je suppose que vous utilisez vbscript pour l'action personnalisée. Si c'est le cas, les propriétés peuvent être accessibles via l'objet Session. Voir ci-dessous:

strSourceDir = Session.Property("SourceDir") 

Soyez conscient que la propriété SourceDir est disponible à specific times during the installation.

1

Pour C#, vous constaterez que vous pouvez faire quelque chose comme ceci:

[CustomAction] 
public static ActionResult MyCustomAction(Session session) 
{ 
    string sourceDir = session["SourceDir"]; 
    string path = Path.Combine(sourceDir, "yourfilename.txt"); 
    ... 

Le documentation on MSDN est malheureusement manque ce qui en fait clairement. Comme w4g3n3r mentionne dans sa réponse, SourceDir n'est disponible que pour vous à certains moments. En bref, vous devrez vous assurer que votre action personnalisée est appelée après un appel à l'action ResolveSource, qui ne peut être appelée qu'après l'exécution de CostInitialize.

Une fois que SourceDir est défini, il devrait être disponible pour le reste du processus d'installation.

0

Utilisez-vous InstallShield? En voici un exemple pour un InstallScript CA:

MsiGetProperty(hMSI, "CustomActionData", strDirectory, numBuffer); 

... où vous avez également utilisé un ensemble de la propriété « Type 51 » d'action personnalisé pour configurer CustomActionData pour votre fonction à la valeur SOURCEDIR.

Questions connexes