在Inno Setup 6.0.0和HKCU中使用RegQueryStringValue。已安装GetPath

时间:2019-02-25 12:49:56

标签: inno-setup inno-setup-v6

使用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'))

我应该在这里进行任何脚本更改吗?

0 个答案:

没有答案