Windows installer MSI-在运行时创建功能?

Windows installer MSI-在运行时创建功能?,windows-installer,installshield,installscript,Windows Installer,Installshield,Installscript,在InstallShield基本MSI项目中,我有一些功能和组件,但我不想在运行时添加一些功能,这些功能将显示在CustomSetup对话框中,而不包含任何相关组件。这可能吗? 我一直在InstallScript中尝试以下代码: hDB = MsiGetActiveDatabase(hMSI); MsiDatabaseOpenView(hDB, "SELECT * FROM `Feature`", hView); hRec = MsiCreateRecord(6); MsiRecordSe

在InstallShield基本MSI项目中,我有一些功能和组件,但我不想在运行时添加一些功能,这些功能将显示在CustomSetup对话框中,而不包含任何相关组件。这可能吗?
我一直在InstallScript中尝试以下代码:

hDB = MsiGetActiveDatabase(hMSI); 
MsiDatabaseOpenView(hDB, "SELECT * FROM `Feature`", hView); 
hRec = MsiCreateRecord(6);

MsiRecordSetString (hRec,1,"TEST");
MsiRecordSetString (hRec,3,"TEST");
MsiRecordSetInteger(hRec,5,2);
MsiRecordSetInteger(hRec,6,1);
MsiRecordSetString (hRec,7,INSTALLDIR);
MsiRecordSetInteger(hRec,8,0);
MsiViewModify(hView, MSIMODIFY_INSERT_TEMPORARY, hRec);
MsiCloseHandle(hRec);

MsiCloseHandle(hRec);
MsiCloseHandle(hView);  
MsiCloseHandle(hDB); 

这类事情通常是通过将特性放在MSI设置中来完成的,给它们一个级别(安装级别)来阻止它们被显示。功能还需要组件。然而,这似乎是一个XY问题,所以我们不知道你们想要实现什么,是的,正如PhilDW所说,这是正确的。在MSI设置中创建功能,在其中添加组件,在其中添加文件。在运行时,您可以只设置标志来显示/安装该功能或不安装该功能。