使用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'))
我应该在这里进行任何脚本更改吗?