2

令我非常懊恼的是,我必须使用 VBS 来编写 InstallShield 2010 LE 自定义操作。我没有 VBS 经验,所以我基本上是将找到的代码片段放在一起。

我需要获取 Common Documents 文件夹 (CSIDL_COMMON_DOCUMENTS)。它没有在WScript.Shell.SpecialFolders(尽管所有用户桌面是)中定义。我发现了一些尝试链接到系统 DLL 的示例代码:

Private Declare Function SHGetFolderPath Lib "shfolder.dll" _
Alias "SHGetFolderPathA" _
    (ByVal hwndOwner As Long, _
    ByVal nFolder As Long, _
    ByVal hToken As Long, _
    ByVal dwReserved As Long, _
    ByVal lpszPath As String) As Long

但是当我尝试在 VbsEdit 中运行它时,第一行出现以下错误:

Microsoft VBScript compilation error: Expected end of statement

有任何想法吗?

4

2 回答 2

8

从这里偷来的

  Const CSIDL_COMMON_DOCUMENTS = &h2e
  Dim objShell : Set objShell = CreateObject("Shell.Application")
  WScript.Echo objShell.Namespace(CSIDL_COMMON_DOCUMENTS).Self.Path

输出:

C:\Documents and Settings\All Users\Documents
于 2012-01-04T18:12:11.407 回答
0

忽略 VBScript 自定义操作非常有问题的事实,您可以向 WindowsInstaller 询问 CommonAppDataFolder 的位置。

CommonAppDataFolder 属性

commonAppDataFolder = session.Property("CommonAppDataFolder")
于 2012-01-04T23:58:16.773 回答