2010-07-15 36 views
0

在我的安装程序中,我需要执行以下操作:从注册表中获取外部应用程序的位置,并为我的应用程序执行程序和此“父级”目录中的各种文件创建文件夹。我知道如何从注册表中获取此目录,但不幸的是,我得到的字符串如下所示:C:/ Programm Files/Manufacturer/ExtApplication/extapp.exe。使用JScript或VBScript自定义动作

当然,它不适合我。所以,据我所知,我需要从中删除“extapp.exe”部分。我试图通过使用VBScript或JScript的CustomAction来完成它,但是我在这两个脚本中都没有足够的幽默感,也没有wix本身。我读过Type51,Type 35等CustomAction类型,但我不知道该如何1)删除字符串的一部分; 2)在目录元素中使用它; 3)在安装文件之前完成所有这些。

将不胜感激的任何建议(不使用脚本以及)。

回答

1

首先,您不应该使用脚本自定义操作。他们是非常脆弱:

http://blogs.msdn.com/b/robmen/archive/2004/05/20/136530.aspx

这是我怎么会卷:

1)使用RegLocator/AppSearch注册表值拉成一个属性在6.在安装的开始。然后调用解析文件名的C++自定义操作。此自定义操作应该在CostInitialize之前安排。

这里您不会使用51或35,您将使用类型1,并调用MsiSetProperty(),该类型等同于类型51. 51和35之间的区别是您在成本计算之前使用51, 35成本计算后。

您设置的属性的名称应该与您正在使用的目录表行的ID的名称匹配。该行的任何孩子将相对于您设置的路径相对路径。

+0

对不起,你不能举个例子吗?我写了一个DLL,但我不知道如何编写自定义操作,以便我可以最终设置目录。 – 26071986 2010-07-16 11:30:45

+0

对不起,我回答问题,不提供完整的解决方案。如果你进入Visual Studio,你会看到File |新增| WiX | C++自定义操作。它会为你建立一个项目。在MSDN中搜索如何使用MsiGetProperty()和MsiSetProperty()的示例。在StackOverflow中搜索如何去除尾部反斜杠的示例,然后阅读如何将自定义动作插入到WiX中的示例。 如果你需要一个如何做到这一切的例子,我总是可以咨询。 – 2010-07-16 12:17:12

+0

谢谢你的建议和耐心 - 最后我做到了:) – 26071986 2010-07-17 13:38:21

相关问题