繁体   English   中英

我如何创建一个复选框,只有当它被选中时,安装程序才会在 InstallShield 的 InstallScript 项目的桌面上创建快捷方式?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM