使用NSIS,我想将InstallDir
设置为CSIDL_COMMON_APPDATA。
这可能类似于
C:\ Documents and Settings \ All Users \ Application Data
不幸的是,the variables/constants allowed in InstallDir
不支持常见的应用数据文件夹。
所以我试过了:
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i 0x23, i0)i.r0'
InstallDir "$1\MyProduct"
(0x23
等于CSIDL_COMMON_APPDATA)
编译时,NSIS会抱怨以下错误:
错误:无法添加条目,没有打开任何部分或功能!
我的问题:
如何将安装目录设置为CSIDL_COMMON_APPDATA?
答案 0 :(得分:1)
SetShellVarContext
指令更改了一些NSIS常量,以便它们指向特殊路径的所有用户版本:
Function .onInit
SetShellVarContext all
StrCpy $InstDir $AppData
FunctionEnd
答案 1 :(得分:0)
基于this suggestion,我找到了一种解决方法:
首先,将InstallDir
设置为任意值:
InstallDir "$PROGRAMFILES\MyProduct"
接下来,使用.onInit
功能进行更改:
Function .onInit
System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i 0x23, i0)i.r0'
StrCpy $InstDir "$1\MyProduct"
FunctionEnd