我正在尝试使用Snapcraft.io构建应用程序版本,我几乎都在工作。
Snapcraft已编译源代码,生成.snap文件,包含所有依赖项,等等然而,在第一次安装应用程序后,我仍然坚持如何在UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0)
文件夹中初始化一些配置文件。
我不想将文件置于默认读取状态只有路径SNAP_USER_DATA
,因为默认参数应该由用户修改,我还需要生成一些额外的文件,比如服务器证书。
所以我需要复制一些文件,然后运行脚本第一次安装。
这可能吗?
感谢。
答案 0 :(得分:0)
由于快照以root用户身份安装,因此在安装时无法完全按照您的要求进行操作,因为$SNAP_USER_DATA
是用户特定的,因此它始终是root用户。但是,您可以使用$SNAP_DATA
挂钩使用系统范围的目录(例如install
)在安装时执行此操作:
$ snapcraft init
Created snap/snapcraft.yaml.
Edit the file to your liking or run `snapcraft` to get started
创建钩子。在我们的案例中,我们只需在$SNAP_DATA
中创建一个新文件,但您可以随意执行任何操作。
$ mkdir -p snap/hooks
$ echo "touch \$SNAP_DATA/foo" >> snap/hooks/install
$ chmod a+x snap/hooks/install
构建快照。
$ snapcraft
Preparing to pull my-part
Pulling my-part
Preparing to build my-part
Building my-part
Staging my-part
Priming my-part
Snapping 'my-snap-name' |
Snapped my-snap-name_0.1_amd64.snap
安装快照。这将运行install
挂钩。
$ sudo snap install my-snap-name_0.1_amd64.snap --devmode --dangerous
my-snap-name 0.1 installed
请注意,文件是在$ SNAP_DATA中创建的。
$ ls /var/snap/my-snap-name/current
foo
获得$SNAP_USER_DATA
的类似功能的唯一方法是将您的真实命令包装在创建配置的脚本中。然后,用户运行此命令,这意味着您获得了您想要的$SNAP_USER_DATA
。当然,这不是在安装时。