应该是在出错的那些机器的注册表中HKLM\SOFTWARE\Autodesk\3dsMax\18.0,Installdir的键是存在的,但是Installdir的值是空的引起的。可自己写一段代码来检测Installdir的值是否为空。
[Setup]
UserInfoPage=true
DisableStartupPrompt=yes
DirExistsWarning=no
AppId={{0E8C5C12-111D-49DD-991E-3D268B0B7F3C}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
AppPublisher={#MyAppPublisher}
DefaultDirName={code:GetPreviousPath}
DisableDirPage=yes
DisableProgramGroupPage=yes
DisableReadyPage=yes
OutputDir=C:\Users\Alxen\Desktop\test
OutputBaseFilename=setup
UsePreviousTasks=yes
Encryption=no
Compression=lzma/ultra64
SolidCompression=yes
Uninstallable=no
AppendDefaultDirName=no
ArchitecturesInstallIn64BitMode=x64
ArchitecturesAllowed=x64
[Files]
; 安装需要文件
Source: "C:\Users\Alxen\Desktop\setup.bat"; DestDir: "{tmp}"; Flags: ignoreversion deleteafterinstall
[Run]
Filename: "{tmp}\setup.bat"; Parameters: /s; StatusMsg: "正在安装文件...."; Flags: nowait runhidden;
[CODE]
function GetPreviousPath(Default: String): String;
var
sPath: String;
begin
RegQueryStringValue( HKLM, 'SOFTWARE\Autodesk\3dsMax\18.0', 'Installdir', sPath );
if sPath = '' then
begin
sPath := ExpandConstant('{pf}');
end;
Result := sPath;
end;