使用 Inno Setup 6.0.0 beta 我得到这个警告:
警告:[Setup] 部分指令“PrivilegesRequired”设置为“admin”,但脚本使用每个用户区域(HKCU、userappdata、userdesktop)。无论 Windows 的版本如何,如果安装在管理安装模式下运行,那么您应该小心对每个用户区域进行任何更改:此类更改可能无法达到您的预期。有关详细信息,请参阅帮助文件中的“UsedUserAreasWarning”主题。
我的代码中的一个例子:
// Returns the path where the program was last installed
function GetPathInstalled( AppID: String ): String;
var
sPrevPath: String;
begin
sPrevPath := '';
if not RegQueryStringValue( HKLM,
'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1',
'Inno Setup: App Path', sPrevpath) then
RegQueryStringValue( HKCU, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\'+AppID+'_is1' ,
'Inno Setup: App Path', sPrevpath);
Result := sPrevPath;
end;
现在使用 v6 处理这个问题的合适方法是什么?
更新
为了澄清所发表的评论,我检查了我的脚本,并且在[ISPP]
我的部分中:
#define DataDir "{userappdata}\" + MSA
在[icons]
我的部分中:
Name: "{userdesktop}\Meeting Schedule Assistant"; Filename: {app}\MeetSchedAssist.exe; Tasks: desktopicon;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\Meeting Schedule Assistant"; Filename: {app}\MeetSchedAssist.exe; MinVersion: 4,4; Tasks: quicklaunchicon;
该[registry]
部分还有一个条目:
Root: "HKCU"; Subkey: "Software\MeetSchedAssist\Meeting Schedule Assistant"; Flags: uninsdeletekey
但它也有 HKLM / HKLM64 对应物。
设计设置将数据文件安装到公共数据文件夹中,然后应用程序本身将这些文件复制到用户数据文件夹(如果它们丢失)。
我相信我提升安装程序的原因是因为我们必须注册程序集:
Filename: "{dotnet40}\regasm.exe"; \
Parameters: "/u PTSTools_x86.dll"; \
WorkingDir: "{app}"; \
Flags: runhidden; \
Check: FileExists(ExpandConstant('{app}\PTSTools_x86.dll')); \
AfterInstall: DoDeleteFile(ExpandConstant('{app}\PTSTools_x86.dll'))
Filename: "{dotnet4064}\regasm.exe"; \
Parameters: "/u PTSTools_x64.dll"; \
WorkingDir: "{app}"; \
Flags: runhidden; \
Check: IsWin64 and FileExists(ExpandConstant('{app}\PTSTools_x64.dll')); \
AfterInstall: DoDeleteFile(ExpandConstant('{app}\PTSTools_x64.dll'))
我应该在这里进行任何脚本更改吗?