我想将属性值更改为对话框中的选定文本。
这是我的样本来源。
#include "ifx.h"
STRING outPath;
export prototype MyFunction(HWND);
function OnFirstUIBefore()
NUMBER nResult, nSetupType, nvSize, nUser;
STRING szTitle, szMsg, szQuestion, svName, svCompany, szFile, szDir;
STRING szLicenseFile;
BOOL bCustom, bIgnore1, bIgnore2;
begin
Dlg_SdAskDestPath:
nResult = SdAskDestPath(szTitle, szMsg, INSTALLDIR, 0);
if (nResult = BACK) goto Dlg_SdAskDestPath;
Dlg_AskOutPath:
nResult = AskDestPath(szTitle, szmsg, szDir, 0);
if (nResult = BACK) goto Dlg_SdAskDestPath;
outPath = szDir;
MyFunction(ISMSI_HANDLE);
return 0;
end;
function MyFunction(hMSI)
STRING value;
begin
MsiSetProperty(hMSI, "OutPutPath", outPath);
end;
完成安装后在自定义操作中使用的OutPutPath。
但在自定义操作中读取时未更改OutPutPath。
我想我不能使用ISMSI_HANDLE。但我不知道我必须使用什么。
我尝试进行自定义操作,在完成安装后加载安装脚本的方法MyFunction。
效果很好,但全局变量outPath是nul ..
如果你知道的话,请教我如何做到这一点。
谢谢。
答案 0 :(得分:0)
至少,您必须使用public property,即名称不包含任何小写字母的SecureCustomProperties。如果您支持在受限制的环境中安装,您可能还必须在中列出它以允许用户对其进行修改。
但是,我不确定您的评论所描述的具体情况:
我尝试进行自定义操作,在完成安装后加载安装脚本的方法MyFunction。
如果此方案确实在安装的Windows Installer部分结束之后(InstallScript MSI在之前和之后运行代码),则整个属性可能无法生存以执行您所需的操作。要支持读取当时的值,您必须考虑其他方法,例如在注册表中写入值,或者在文件中(例如在SUPPORTDIR中)。