1

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

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

4

0 回答 0