我正在创建一个基本 MSI 项目,该项目需要将其文件复制到运行时不同的位置。
我尝试使用自定义操作在运行时设置 INSTALLDIR 的值。这在调试器中有效(在安装后初始化执行序列中),但如果 MSI 文件移动到另一个文件夹并直接从那里运行(在调试器外部),则无效。
我还尝试在其他执行序列自定义操作中设置 INSTALLDIR,但无济于事。
代码如下:
// Called at various exec sequences, including After Cost Finalize
function AfterXXX(hMSI)
// To Do: Declare local variables.
STRING szMsg;
NUMBER nResult;
begin
if (!SetXXXFolders()) then
szMsg = "Unable to retrieve XXX install path. The installation will not continue.";
MessageBox(szMsg, SEVERE);
return ERROR_INSTALL_FAILURE;
endif;
// Set INSTALLDIR to szPrograms (confirmed properly populated)
INSTALLDIR = szPrograms;
return ERROR_SUCCESS;
end;
InstallShield 版本是 InstallShield 2023 Premiere。
对可能出现的问题有什么想法吗?
给定代码中 INSTALLDIR 的分配不正确。使用 MsiSetProperty 方法。
MsiSetProperty(hMSI, "USERNAME", svName);