我有一些与我的安装程序捆绑在一起的目录,我需要在自定义操作中访问它们。我做了一些研究,发现SourceDir可用于获取当前正在执行的dir位置。但是我找不到如何获得这个属性的任何例子?或者另一种获取当前目录的方法?
有人可以建议或指出除了无用的微软网站以外的任何其他内容吗?
答案 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。