错误:“您必须输入带驱动器号的完整路径;例如:C:\ APPor形式为UNC路径:\\ server \ share”

时间:2014-11-01 07:44:44

标签: inno-setup

我想知道如何解决这种错误:

  

您必须输入带驱动器号的完整路径;例如:C:\ APP或UNC路径,格式为:\ server \ share

只要我试图强制Inno安装编译器(5.5.5 u)将我的内容放入{{say say H:\}而不是{H:\New Folder},就会出现这种情况。

我需要编译器将我的目标位置自定义为H:\

这是我的示例程序;

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={drive:F:}
AppendDefaultDirName=no

[Files]
Source: "File1.txt"; DestDir: "{code:GetExeLocation|{app}\My_Portable_App}"; Flags: ignoreversion 

[Code]
var
  UsagePage: TInputOptionWizardPage;

procedure InitializeWizard;
begin
  { Create the pages }
  UsagePage := CreateInputOptionPage(wpWelcome,
    'Installation Type', 'Select Installation Option',
    'Where would you like to install this program',
    True, False);
  UsagePage.Add('Normal – PC Hard Disk Installation ');
  UsagePage.Add('Portable – USB Drive Installation');

  {Set Default – Normal Install}
  UsagePage.SelectedValueIndex := 0;
end;

var
  bIsPortable : Boolean;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  // If we have clicked the next button on our custom page.
  if (CurPageID = UsagePage.ID) then
  begin
    bIsPortable := not (UsagePage.SelectedValueIndex = 0);
  end;
  result := true; // need to return a value so next key has an impact
end;

function GetExeLocation (Param: String) : String;
begin
  if bIsPortable then
    result := Param
  else
    result := Param;
end;

function InstallType(sRequiredType:String):Boolean;
begin
  if sRequiredType = 'Portable' then
    result := bIsPortable
  else
    result := not bIsPortable;
end;

说明:

当我选择"正常 - PC硬盘安装",作为我的选择时,我的所有安装文件或文件夹应该转到C:\My Program的正常路径,但是当我选择&#时34;便携式 - USB驱动器安装"作为我的条目,我想将我的所有安装文件或文件夹直接放入USB Pen驱动器Root,即H:\,其中" H"是我的USB Pen Drive信件,我选择将其放入。但我的程序不允许我这样做,而是默认添加一个新文件夹,将我的安装文件或文件夹放在那里,即{{ 1}}我根本不需要它!当我强迫我做我想做的事时,它结束了给我一个错误!

我需要你的帮助来解决这个问题,如果这个创新设置无法做到我想要的,请指出另一个,我会感激的!

编辑:

NB:   让我们关注第二个选择"('便携式 - USB驱动器安装')"因为这是我真正的目标!

来自消息来源:我做了一些改动,以便更清楚。

我添加了目标目录,即" {code:GetExeLocation | {app} \ My_Portable_App}"。所以我想要的是,我在这个目录中安装的所有安装文件或文件夹,我的意思是" My_Portable_App"。我的USB笔式驱动器的路径应该是[H:\ My_Portable_App]。所以当这很好的时候,我想只看到这个文件夹" My_Portable_App"在我的USB笔式驱动器中,它将包含我所有的东西!!!

提前致谢!

我需要你的帮助,请修复这个...... !!!

3 个答案:

答案 0 :(得分:1)

如果要直接安装到h:\,则应明确将其输入到位置框中。如果您还想在使用浏览对话框后停止追加My Program,则需要确保AppendDefaultDirName设置为否。

另请注意,对于file2,如果DestDir为真,{app}/{app}将最终设置为bIsPortable,这很可能会扩展为无效路径。

您最好的选择是使用{code:...}功能创建单个"默认"基于bIsPortable的路径,然后一切都可以从那里安装到​​{app}

答案 1 :(得分:0)

我也为验证而苦恼,因为在TInputDirWizardPage中root无效。 事实证明,有一个简单的Inno设置选项可以更改此行为:

  

AllowRootDirectory =是

将允许用户指定驱动器根目录而不会出现错误。 也可以看到

  

AllowUNCPath =是/否

  

AllowNetworkDrive =是/否

Inp帮助文件中的

适用于“选择目标位置页面”的其他验证修饰符。

答案 2 :(得分:0)

此安装文件必须位于光盘c:上。 就是这样。