繁体   English   中英

MSI安装程序数据属性

[英]MSI Installer Data Properties

我正在为一个正在从事的大型项目进行MSI安装,我很想知道有关我所看到的此属性的更多信息。

它们是[TARGETDIR]之类的东西,或包裹在[[PROPERTNAMEHERE]“中的任何东西。 我正在尝试找出它们是否在任何地方都是这些的列表?

顺便说一句,是否仍然可以通过自定义操作访问所有这些属性。 我已经查看了Context.Parameters集合,但在那里什么都没有看到。 我已经将/ name =“ [TARGETDIR] \\”作为CustomActionData传递给customaction,但这还不够。

谢谢

史蒂夫

使用基于MSI的软件包时,了解属性非常重要。 首先,您应该知道有两种属性,即公共属性私有属性 使用自定义操作时,应始终使用公共属性,以避免在安装过程从InstallUI Sequence传递到InstallExecute Sequence时重置其值。

同样, 非常重要的是 ,自定义操作无法在延迟运行时获取/设置属性。 只有立即(即非延迟) 自定义操作才能获取/设置属性值。

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

现在,无论如何考虑自定义动作,您都可以编写C ++,C#或VBScript自定义动作来在安装过程中获取/设置属性。

不建议在正式的应用程序版本中使用VBScript,但可以将其用于需要内部使用的快速工具。

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

如果更方便的话,您也可以获得编写C#代码的类似DLL。

确保您不要尝试将标准DLL作为自定义操作运行非常重要,某些商业/免费安装创作工具也支持该功能,但并非全部。 如果您打算编写DLL自定义操作,则最好从一开始就使用上面链接的两个示例(C ++ / C#)之一执行此操作。

发布此消息几秒钟后,我发现了我要查找的关于属性列表的内容: http : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa370905(v=vs.85).aspx

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

如果您使用的是WIX ...

首先要回答您的旁注-您可以从自定义操作中访问自定义值(假设您知道如何设置自定义操作...)-查看您的会话对象(自定义操作的参数)-有一个带有索引器的CustomActionData。 通过指定来指定要使用的属性的名称

session.CustomActionData["INSTALLLOCATION"]

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

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

要回答您的另一个问题-不,我认为您无法在必须编写脚本的代码中获得这些值。

HTH

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM