Я только что создал настраиваемый диалог с флажком, спрашивающим, хочет ли пользователь создать ярлык на рабочем столе. Раньше я всегда включал ярлык. Я не использую функцию AskText()
, так как я планирую добавить больше фрагментов на эту страницу позже и хочу упростить эти несколько параметров на этой странице.
Я получаю элемент на своем рабочем столе при запуске, но это не то, что я ожидаю. Похоже, что цель указывает на местоположение на самом рабочем столе, а не на фактический исполняемый файл. Кроме того, этот ярлык не удаляется при удалении (я предполагаю, что это все равно нужно обрабатывать отдельно), и для ярлыка требуются права администратора для удаления вручную (чего я не хочу по очевидным причинам).
Ниже мой код InstallScript. Это пользовательское действие, которое было вставлено после InstallFiles
.
function MyFunction(hMSI)
STRING szProgramFolder, szItemName, szCommandLine, szWorkingDir;
STRING szShortCutKey, szProgram, szParam, szIconPath;
NUMBER nIcon, nResult;
begin
szProgramFolder = FOLDER_DESKTOP;
szItemName = "myProgram";
szProgram = INSTALLDIR + "myProgram.exe" ;
LongPathToQuote (szProgram, TRUE);
szCommandLine = szProgram;
szWorkingDir = INSTALLDIR;
szIconPath = "";
nIcon = 0;
szShortCutKey = "";
nResult = AddFolderIcon (szProgramFolder, szItemName, szCommandLine,szWorkingDir,
szIconPath, nIcon, szShortCutKey, REPLACE);
end;
Я не совсем уверен, где я ошибаюсь, хотя мои знания об InstallShield (не говоря уже об InstallScript) очень ограничены.