【发布时间】:2016-06-06 17:12:55
【问题描述】:
我刚刚创建了一个带有复选框的自定义对话框,询问用户是否要创建桌面快捷方式。我以前总是包含一个我不使用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)的了解非常有限,但我不太确定我哪里出错了。
【问题讨论】:
-
它是立即的还是延迟的自定义操作?延迟自定义操作不会初始化 INSTALLDIR 变量。
-
@yossiz74 - 我已将其更改为立即操作,并将其放在 ExecuteAction 之后,它似乎在很大程度上可以正常工作。
-
太好了,我会把它添加为答案
标签: installshield shortcut installscript basic-msi