首次尝试发布此问题时有严重的时差。这个重新编辑的问题我只有相关的睡眠剥夺...Inno安装程序 - 如何用字符串替换UserName
我想知道使用安装程序捕获路径信息,然后删除任何对用户配置文件的任何参考的最佳方式。
我的程序旨在从中央网络位置运行。为了减少网络流量,一些文件被复制到本地驱动器,例如。应用程序数据\ 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}'));
在安装过程中的本地驱动器位置被指定并存储在配置文件中。
我没有预测到的一个问题是,在安装程序时,配置文件中的路径是为单个用户(即执行安装的用户)定义的。在实际应用中的任何用户应该能够运行程序...
为了得到正确的路径对于任何给定用户,我的软件查找字符串“{用户名}”,并替换它:ENVIRON(用户名)
MyPath = Replace(MyPath, "{UserName}", Environ(UserName))
因此,例如,在安装程序中我需要更换:
C:\Users\My Name\My Program OR C:\Users\My Admin\My Program
的东西,如:
C:\Users\\{UserName}\My Program
我alreay有这项工作在我的程序,但我不知道最好的方式让它在Inno工作...我的初始想法是写这样的配置文件:
StringChangeEx(MyPath,“My名称“,”{用户名}“,真)
想对此有一些观点,不知道如何让它适用于所有情况。
干杯,
Miral嗨 - 所以倒时差已经磨损了。 ..我想我很欣赏你在说什么(当然,欣赏评论,不知道我明白)。我允许用户在任何地方存储程序。该程序还可以将一些文件(图像和配置文件)复制到本地位置。在inno中,我让安装程序浏览到一个文件夹来安装这些文件。我还要求他们指定一个当地的位置......呃,我得到它......如果本地位置是myDocuments,那么保存它,而不是路径 - 正确。遵守我的名字。干杯, – SlowLearner 2014-10-20 22:17:14
我会建议使用'CreateInputOptionPage'或类似的显示单选按钮的“保存在我的文档”,“保存在应用程序数据”,“保存在指定位置”等,其中只有最底层提供文件夹浏览器。 – Miral 2014-10-21 06:34:28