从C#自定义操作获取SourceDir属性

时间:2008-11-11 12:22:53

标签: c# .net installer installation

我有一些与我的安装程序捆绑在一起的目录,我需要在自定义操作中访问它们。我做了一些研究,发现SourceDir可用于获取当前正在执行的dir位置。但是我找不到如何获得这个属性的任何例子?或者另一种获取当前目录的方法?

有人可以建议或指出除了无用的微软网站以外的任何其他内容吗?

3 个答案:

答案 0 :(得分:1)

我假设您正在使用vbscript进行自定义操作。如果是,则可以通过Session对象访问属性。见下文:

strSourceDir = Session.Property("SourceDir")

请注意,SourceDir属性仅在specific times during the installation处可用。

答案 1 :(得分:1)

对于C#,你会发现你可以这样做:

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

遗憾的是,documentation on MSDN缺乏明确的目标。

正如w4g3n3r在他的回答中提到的,SourceDir仅在某些时候可用。简而言之,您需要确保在调用ResolveSource操作后调用 ,该操作只能在CostInitialize运行后调用。

设置SourceDir后,它应该可用于安装过程的其余部分。

答案 2 :(得分:0)

您使用的是InstallShield吗?以下是InstallScript CA的示例:

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

...您还使用Set Property“Type 51”自定义操作将函数的CustomActionData设置为值SOURCEDIR。