【问题标题】:Getting the SourceDir property from a C# custom action从 C# 自定义操作中获取 SourceDir 属性
【发布时间】:2008-11-11 12:22:52
【问题描述】:

我有一些与我的安装程序捆绑在一起的目录,我需要从自定义操作中访问它们。我做了一些研究,发现可以使用 SourceDir 来获取当前正在执行的 dir 位置。但是我找不到任何有关如何获得此属性的示例?或者其他方式获取当前目录?

除了无用的 Microsoft 网站之外,任何人都可以给我建议或指点我吗?

【问题讨论】:

  • 提及您用于构建安装程序、WIX、NULLSoft、InstallShield 等的工具会很有帮助...
  • 另外,如果您的自定义操作是延迟的还是立即的,也会有所帮助。

标签: c# .net installation


【解决方案1】:

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

strSourceDir = Session.Property("SourceDir")

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

【讨论】:

    【解决方案2】:

    对于 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,它应该可以用于安装过程的剩余部分。

    【讨论】:

      【解决方案3】:

      您在使用 InstallShield 吗?下面是一个 InstallScript CA 的示例:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多