我想在构建32位和64位安装程序时保持我的顶级.wxs DRY.我正在使用candle.exe的-arch参数来控制构建的默认安装程序架构.
我现在正在讨论的是,看起来ProgramFilesFolder在32位和64位(ProgramFiles64Folder)架构之间是不同的.这是我第一次尝试解决的问题:
<?if $(sys.BUILDARCH)=x64 ?>
<Directory Id='ProgramFiles64Folder' Name='PFiles'>
<?else ?>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<?endif ?>
<Directory Id='the-rest' Name="Company Name">
...
Run Code Online (Sandbox Code Playgroud)
我尝试了这个错误.显然,在评估预处理器之前会触发XML验证.当我手动更改为使用ProgramFiles64Folder我的构建工作.
我试图沿着DirectoryRef路线走下去但没有成功.有关在没有在.wxs文件中进行sed替换的情况下使其工作的任何建议吗?
注意:我在Wix 3.5和3.6中试过这个.
我有一个长期存在的安装程序,它使用RegistryValue来设置.Net COM服务器.安装程序是32位.我想为64位操作系统设置注册表设置.我的研究表明,为此,我需要一个单独的64位安装程序.那么我怎么能有一个检测OS的引导程序并调用正确的32位或64位.msi?
启动Linux容器时(详情如下).我看到成功,docker run ...但docker-compose up没有抱怨绑定挂载路径.感觉就像docker run绑定将卷安装到linux VM(通过Hyper V)
Docker撰写错误
无法为服务registrator创建容器:b'Mount denied:源路径"\\ var \\ run \\ docker.sock:/tmp/docker.sock"不是有效的Windows路径'
以下是有关我如何启动容器的详细信息:
Docker Run(按预期工作):
docker run --network=host --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator consul://localhost:8500
Run Code Online (Sandbox Code Playgroud)
Docker撰写:
registrator:
image: gliderlabs/registrator
command: "consul://consul:8500"
network_mode: host
volumes:
- /var/run/docker.sock:/tmp/docker.sock
Run Code Online (Sandbox Code Playgroud)
操作系统:Windows 10 1709(操作系统内部版本16299.371)适用于Windows的Docker:18.04.0-ce Docker撰写:1.21.0
我希望将一个数组[T]分配给一个可选的数组[T?].这似乎应该是直截了当的,但我想出的唯一解决方案是手动完成.
struct ArrayHelper<T> {
func toArrayOfOptionals(input: [T]) -> [T?] {
var result = [T?]()
for value in input {
result.append(value)
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)