我如何获得自己的MSI/EXE安装文件的文件名?



我需要在InstallScript函数中获得自己的安装包的文件名。我该怎么做呢?

SETUPEXEDIR和SETUPEXENAME是MSI属性。可以通过MsiGetProperty函数获取它们的值。如果不使用MSI,则可以使用PACKAGE_LOCATION系统变量,如

所示
ParsePath(svSetupExeFileName, PACKAGE_LOCATION, FILENAME);

我找到了一种方法来获得文件名:

function ShowInstallerFilename(hMSI)
NUMBER maxPath;
STRING originalDatabase;
begin
maxPath = MAX_PATH;
if(MsiGetProperty(hMSI, "OriginalDatabase", originalDatabase, maxPath) == ERROR_SUCCESS) then
SprintfBox(INFORMATION, "Deferred Execution", "Original database is %s", originalDatabase);
endif;
MessageBox("Done", INFORMATION);
end;