与Ansi版本相比,Inno Setup Unicode版本有任何缺点吗?
或者是什么原因仍然是两个版本并行提供,而不仅仅是Unicode版本?
在使用Ansi版本开发的现有Inno Setup项目中使用Unicode版本时是否存在任何潜在问题?
据我所知,从v2开始的protobuf-net支持引用。
我目前正在尝试在可能发生如下循环引用的数据结构中使用它:
[ProtoContract]
internal class WaypointDatabase
{
[ProtoMember(1)]
public List<Waypoint> Waypoints { get; set; }
}
[ProtoContract(AsReferenceDefault = true)]
internal class Waypoint
{
[ProtoMember(1)]
public string Ident { get; set; }
[ProtoMember(2)]
public List<Route> Routes { get; set; }
}
[ProtoContract]
internal class Route
{
[ProtoMember(1)]
public Waypoint PreviousWaypoint { get; set; }
[ProtoMember(2)]
public Waypoint NextWaypoint { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
因此,使用protobuf-net序列化的主要对象是的实例WaypointDatabase
。该对象包含Waypoints
一个列表,Routes
该列表Waypoints
再次指向。
我要使用此数据结构的原因是,某些航路点未包含在路径中/未由路径引用。因此,我需要此路标数据库来跟踪所有路标,无论它们是否在现有路线内。
现在,当我尝试序列化WaypointDatabase
protobuf-net 的实例时,我得到一个StackOverflowException,但我不明白为什么,因为我将该Waypoint
类标记为,AsReferenceDefault
并且我认为这将确保protobuf-net仅在使用引用时才存储该引用。再次(并且这种方式不应无限地遵循循环参考)。 …
我们的应用程序现在原生支持 64 位,因此默认情况下应安装在该C:\Program Files
目录下。因此我们设置了这两个指令:
ArchitecturesInstallIn64BitMode=x64
DefaultDirName={pf}\{#ProductName}
Run Code Online (Sandbox Code Playgroud)
到目前为止,这没有任何问题!
问题是我们的产品确实有很多现有安装,当时它仍然只是 32 位,因此在下面正确安装C:\Program Files (x86)
。
通常,Inno Setup 会检测现有安装并使用相同的安装路径(如果找到)。但从 32 位模式更改为 64 位模式时,这似乎不起作用 - 可能是因为现在使用了不同的卸载注册表项。
如果已经安装了应用程序(以执行更新),是否还有一种方法可以告诉 Inno Setup 使用现有的 32 位安装路径,并且如果是新安装则仅使用 64 位安装路径?
尽管我已经阅读了几篇文章,但直到现在我还是无法真正解决这个问题-希望有人可以在这里提供帮助。
事实(知道变量):
现在,我想计算第二个移动物体与另一个移动物体相交(撞)所需的方向(角度)。
由于物体之间的距离很小(仅在5-20 km之内),并且不需要很高的精度,因此可以将地球表面视为平面。
因此,我已经尝试使用这个出色的库:http : //www.codeproject.com/Articles/990452/Interception-of-Two-Moving-Objects-in-D-Space
但是我真的不知道该如何工作,因为我不知道如何将以m / s为单位的速度来回转换为纬度/经度速度矢量。
为了更好地理解问题,这里有一个带有值的示例:
对此表示感谢,在此先感谢您!