Inno setup Inno设置-如何用字符串替换用户名

Inno setup Inno设置-如何用字符串替换用户名,inno-setup,Inno Setup,发布这个问题的第一次尝试是严重的时差反应。这个问题的重新编辑我只有相关的睡眠剥夺 我想知道使用安装程序捕获路径信息,然后删除对用户配置文件的任何引用的最佳方法 我的程序设计为从中央网络位置运行。为了减少网络流量,将一些文件复制到本地驱动器,例如AppData\MyProg\ 我使用文件浏览对话框,以便安装人员可以指定位置: pg_LocalPaths := CreateInputDirPage(pg_CentralPaths.id, 'Confirm File Locations For Use

发布这个问题的第一次尝试是严重的时差反应。这个问题的重新编辑我只有相关的睡眠剥夺

我想知道使用安装程序捕获路径信息,然后删除对用户配置文件的任何引用的最佳方法

我的程序设计为从中央网络位置运行。为了减少网络流量,将一些文件复制到本地驱动器,例如AppData\MyProg\

我使用文件浏览对话框,以便安装人员可以指定位置:

pg_LocalPaths := CreateInputDirPage(pg_CentralPaths.id,
'Confirm File Locations For User Settings', 'To improve user experience these locations should be off the network.',
'Default Locations are:', False, 'New Folder');
     // Add file browswer item (with an empty caption)
        pg_LocalPaths.Add('Supporting files will be copied here by the application:');
        pg_LocalPaths.Add('User settings (for a single user) will be saved here:');

     // Set initial value 
        pg_LocalPaths.Values[0] := GetPreviousData('pg_LocalPaths0', ExpandConstant('{userappdata}\{#pFolder}'));
        pg_LocalPaths.Values[1] := GetPreviousData('pg_LocalPaths1', ExpandConstant('{userappdata}\{#pFolder}'));
在安装过程中,将指定本地驱动器位置并将其存储在配置文件中

我未能预测的一个问题是,安装程序时,配置文件中的路径是为单个用户定义的,即执行安装的用户。实际上,任何用户都应该能够运行该程序

为了获得任何给定用户的正确路径,我的软件会查找字符串“{UserName}”,并将其替换为:Environ(UserName)

例如,在安装程序中,我需要替换:

C:\Users\My Name\My Program   OR     C:\Users\My Admin\My Program   
比如:

C:\Users\\{UserName}\My Program
我真的有这个在我的程序工作,但我不知道最好的方法,使它在创新工作。。。我最初的想法是这样编写配置文件:

StringChangeEx(MyPath,“我的名字”,“{UserName}”,True)

希望对此有一些看法,但不确定如何使其适用于所有情况


干杯,

你做得不对

不要在配置文件中存储完整的路径;仅存储一个值,该值指示用户希望将数据存储在通常的每个用户位置。(或者不存储任何值,因为这应该是默认值。)

然后在应用程序中,在每次运行应用程序时,使用Shell API获取当前用户的当前AppData路径,并将应用程序的唯一子文件夹附加到此路径

请注意,用户的AppData路径不包含用户名,甚至不在C:,这是完全有效的。不要做假设;使用Shell API。这就是它的目的


(具体使用哪一种以及如何调用它取决于目标操作系统和您选择的编程语言(您尚未指定)。

Hi Miral-所以时差现在已经消失了。。。我想我很欣赏你说的话(当然很欣赏你的评论,我不确定我是否理解)。我允许用户将程序存储在几乎任何地方。该程序还可以将一些文件(图像和配置文件)复制到本地位置。在inno中,我让安装程序浏览到一个文件夹来安装文件。我还要求他们指定一个本地位置。。。哦,等等,我明白了。。。如果本地位置是myDocuments,则保存该位置,而不是路径右侧。不辜负我的名声。干杯,我建议使用
createinputooptionpage
或类似工具来显示“保存在我的文档中”、“保存在应用程序中的数据”、“保存在指定位置”等单选按钮,其中只有底部的按钮提供文件夹浏览器。
C:\Users\\{UserName}\My Program