Directory Inno脚本:奇怪的空文件夹

Directory Inno脚本:奇怪的空文件夹,directory,inno-setup,Directory,Inno Setup,我的Inno脚本安装程序在C:驱动器中创建一个空文件夹,但仅在一台计算机上。我测试脚本的其他每台机器都没有这个问题。我在两台Windows7计算机上进行了测试,一台XP计算机和一台WindowsXP虚拟计算机。对于所有这些计算机,安装程序不会创建此空文件夹 但是,在我同事的Windows XP计算机上,安装程序的行为与它应该的一样,只是它还在C驱动器上创建了一个空目录。卸载不会删除该文件夹 我已经浏览了我的脚本,并查找了可能正在创建额外文件夹的内容,但我什么也看不到。这尤其难以解决,因为我似乎无

我的Inno脚本安装程序在C:驱动器中创建一个空文件夹,但仅在一台计算机上。我测试脚本的其他每台机器都没有这个问题。我在两台Windows7计算机上进行了测试,一台XP计算机和一台WindowsXP虚拟计算机。对于所有这些计算机,安装程序不会创建此空文件夹

但是,在我同事的Windows XP计算机上,安装程序的行为与它应该的一样,只是它还在C驱动器上创建了一个空目录。卸载不会删除该文件夹

我已经浏览了我的脚本,并查找了可能正在创建额外文件夹的内容,但我什么也看不到。这尤其难以解决,因为我似乎无法复制这个问题

这里有人知道为什么会发生这种情况吗

#define MyAppName "Program1"
#define MyAppVersion "1.0"
#define MyAppExeName "program1.exe"

[Setup]
AppName=Test
AppVersion=1.0
AppPublisher=Me
AppSupportURL=www.google.com
AppUpdatesURL= www.google.com

DefaultDirName={code:getDirectory}
UsePreviousAppDir=no
DisableDirPage=yes
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=yes
OutputBaseFilename={#MyAppName} {#MyAppVersion} Setup
Compression=lzma
SolidCompression=yes
OutputDir=output
UninstallFilesDir={code:getDirectory}


[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
Name: "german"; MessagesFile: "compiler:Languages\German.isl"

[Files]
Source: "test.iss"; DestDir: "{code:getDirectory}"; Flags: ignoreversion;

[Code]

var
  InstallTestVersionCheckBox: TNewCheckBox;
  Directory : string;


// ------------------------------
// INSTALL
// ------------------------------ 
procedure InitializeWizard;
var  
  MainPage: TWizardPage;


begin

  MainPage := CreateCustomPage(wpWelcome, 'text', 'text');

  // make the checkbox
  InstallTestVersionCheckBox := TNewCheckBox.Create(MainPage);
  InstallTestVersionCheckBox.Parent := MainPage.Surface;
  InstallTestVersionCheckBox.Caption := 'Test Version';

end;

function InstallTestVersion: Boolean;
begin
  Result := InstallTestVersionCheckBox.Checked;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if InstallTestVersion() then
    begin
      // Set the test version directory
      Directory := ExpandConstant('{pf32}\Testversion');
    end
  else
    begin
      // Set the production version directory
      Directory := ExpandConstant('{pf32}\Normal');
    end;
end;

// Returns the correct directory
function getDirectory(Param: String): String;
begin
  Result := Directory;
end;

对于那些可能遇到类似问题的人:Inno安装程序突然创建了额外的空文件夹,我不想拥有这些文件夹。最后我明白了原因:我试图在[Files]部分中创建一个空文件夹。那不是个好主意。。。因此,您只需使用[Dirs]部分创建空文件夹即可

不要这样做:

[Files]
Source: "M:\My_Empty_Folder"; DestDir: "{userdocs}\My_App_Name"; Flags: ignoreversion
这样更好:

[Dirs]
Name: "{userdocs}\My_App_Name\My_Empty_Folder"

据我所知,Inno安装程序自动创建的唯一文件夹是它自己的临时文件夹,但它在向导运行时不是空的,应该在完成后删除。请检查临时文件夹是否正确设置并可在此计算机上访问。可能出现以下情况:未设置TEMP或TEMP不可访问,安装程序试图在根C:\上创建自己的临时文件夹。例如,如果未设置WorkingDir,M$.NET和VC++可以在根C或磁盘上创建自己的临时文件夹,通常在磁盘上有最大的可用空间。感谢您的回复,我将对此进行研究。我发现它认为它正在创建Dest文件夹。我将阅读有关此的文档。有人知道是否有办法更改目标文件夹,以便我可以控制文件夹的位置,或者至少控制其名称吗?