MSI安装程序数据属性

时间:2013-02-19 14:14:35

标签: c# windows-installer custom-action

我正在为我正在进行的大型项目安装MSI,我很有兴趣了解我所看到的这些属性。

它们是[TARGETDIR]或“[PROPERTNAMEHERE]”中包含的任何内容。我试图找出他们的名单是否在任何地方?

另一方面,无论如何都要从自定义操作中访问所有这些属性。我查看了Context.Parameters集合,但没有看到任何内容。我一直把/ name =“[TARGETDIR] \”作为CustomActionData传递给惯例,但这还不够。

由于

史蒂夫

3 个答案:

答案 0 :(得分:1)

使用基于MSI的软件包时,

Properties非常重要。首先,您应该知道有两种属性public propertiesprivate properties。使用自定义操作时,应始终使用公共属性,以避免在安装过程从InstallUI Sequence传递到InstallExecute Sequence时重置其值。

此外,非常重要,自定义操作在运行延迟时无法获取/设置属性。只有即时的,即非延期的custom actions才能获得/设置属性值。

有一个例外,当运行延迟的自定义操作时,您可以从名为“CustomActionData”的特殊属性中获取值。

现在,在自定义操作方面,您可以编写C ++,C#或VBScript自定义操作以在安装期间获取/设置属性。

VBScript is not recommended for an official application release,但您可以将其用于内部需要使用的快速内容。

对于C++ custom actions,您将获得一个DLL,您可以从中导出一个或多个方法,以便在触发自定义操作时进行调用。请注意,函数签名与标准DLL不同,请仔细分析链接的示例。

如果更方便的话,您也可以获得类似的DLL writing C# code

确保您没有尝试run a standard DLL as a custom action,某些commercial/free setup authoring tools支持这一点非常重要,但不是全部。如果您打算编写DLL自定义操作,最好使用上面链接的两个示例之一(C ++ / C#)从头开始编写。

答案 1 :(得分:0)

我发布此消息后,我找到了我正在寻找的有关房产列表的内容: http://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx

现在我正在寻找一种从代码中访问这些内容的方法吗?

答案 2 :(得分:0)

如果您使用的是WIX ......

首先回答您的旁注 - 您可以从自定义操作中访问自定义值(我假设您知道如何设置自定义操作...) - 查看您的会话对象(自定义操作的参数) ) - 这有一个CustomActionData,它有一个索引器。通过指定

指定要从中获取的属性的名称
session.CustomActionData["INSTALLLOCATION"]

您需要先将属性添加到自定义操作中,然后才能访问它 - 并且要执行此操作,您需要告诉wix将其设置为...

<CustomAction Id="UNIQUEID" Return="check" Property="YourCustomActionNameInWix" Value="INSTALLLOCATION=[INSTALLLOCATION]" />

回答你的另一个问题 - 不,我认为你不能在代码中获得这些值,我总是要编写脚本。

HTH