[英]How can I create a checkbox that only if it's checked the installer creates shortcuts on Desktop in InstallScript project in InstallShield?
这很奇怪,在 InstallShield 的 InstallScript 项目中,没有带有复选框的对话框,允许用户选择是否在安装结束时在桌面、开始菜单或其他任何地方创建快捷方式,我从不想创建强制在桌面上为不需要的用户创建快捷方式的安装程序。
我也这样做了。 首先,我修改了 SetupType 对话框以包含 2 个询问快捷方式的复选框。 如果为真,他们应该创建适当的快捷方式。 我将这些链接到自定义属性(SET_START_MENU_SHORTCUT 和 SET_DESKTOP_SHORTCUT),然后稍后在我附在下面的脚本中检查这些属性。 然后我让安装程序创建两个快捷方式并删除需要删除的快捷方式。 这是 Revenera 告诉我使用的解决方案。
function SelectiveRemoveShortcuts(hMSI)
#define shortcutName "Launch Foo.exe"
STRING szCompany;
STRING szStartMenuPath;
STRING startMenuShortcut;
STRING szDesktop;
STRING szDesktopShortcut;
STRING nvSMProp;
string nvDesktopProp;
NUMBER nvSize;
begin
nvSize = 1;
szCompany = FOLDER_COMMON_APPDATA + "\\Start Menu\\Programs\\CompanyName\\";
szStartMenuPath = szCompany + "Foo\\";
startMenuShortcut = szStartMenuPath + shortcutName;
szDesktop = FOLDER_DESKTOP;
szDesktopShortcut = szDesktop + "\\"+shortcutName;
MsiGetProperty(hMSI, "SET_START_MENU_SHORTCUT", nvSMProp, nvSize);
MsiGetProperty(hMSI, "SET_DESKTOP_SHORTCUT", nvDesktopProp, nvSize);
if nvSMProp != "1" then
DeleteShortcut(szStartMenuPath, shortcutName);
DeleteDir(szStartMenuPath, ONLYDIR);
DeleteDir(szCompany, ONLYDIR);
endif;
if nvDesktopProp != "1" then
DeleteShortcut(szDesktop, shortcutName);
endif;
end;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.