小编ab-*_*ols的帖子

从Ansi升级到Inno Setup的Unicode版本(任何缺点)

与Ansi版本相比,Inno Setup Unicode版本有任何缺点吗?

或者是什么原因仍然是两个版本并行提供,而不仅仅是Unicode版本?

在使用Ansi版本开发的现有Inno Setup项目中使用Unicode版本时是否存在任何潜在问题?

inno-setup

6
推荐指数
1
解决办法
1681
查看次数

带循环引用的protobuf-net v2

据我所知,从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再次指向。

我要使用此数据结构的原因是,某些航路点未包含在路径中/未由路径引用。因此,我需要此路标数据库来跟踪所有路标,无论它们是否在现有路线内。

现在,当我尝试序列化WaypointDatabaseprotobuf-net 的实例时,我得到一个StackOverflowException,但我不明白为什么,因为我将该Waypoint类标记为,AsReferenceDefault并且我认为这将确保protobuf-net仅在使用引用时才存储该引用。再次(并且这种方式不应无限地遵循循环参考)。 …

c# protobuf-net

5
推荐指数
0
解决办法
471
查看次数

Inno Setup:保留现有的 32 位安装路径进行升级,使用 64 位路径进行新安装

我们的应用程序现在原生支持 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 位安装路径?

inno-setup

5
推荐指数
1
解决办法
628
查看次数

具有纬度/经度坐标的两个运动对象的交点

尽管我已经阅读了几篇文章,但直到现在我还是无法真正解决这个问题-希望有人可以在这里提供帮助。

事实(知道变量):

  • 地球表面上的两个运动物体,都具有当前的纬度/经度坐标。
  • 两个物体的速度也是已知的(以m / s为单位)。
  • 一个物体的方向(角度)是已知的。

现在,我想计算第二个移动物体与另一个移动物体相交(撞)所需的方向(角度)。

由于物体之间的距离很小(仅在5-20 km之内),并且不需要很高的精度,因此可以将地球表面视为平面。

因此,我已经尝试使用这个出色的库:http : //www.codeproject.com/Articles/990452/Interception-of-Two-Moving-Objects-in-D-Space

但是我真的不知道该如何工作,因为我不知道如何将以m / s为单位的速度来回转换为纬度/经度速度矢量。

为了更好地理解问题,这里有一个带有值的示例:

  • 运动对象1(运行器):
    • 当前位置:纬度:38.565,经度:-98.513
    • 速度:100 m / s
    • 方向:270°
  • 运动对象2(追赶者):
    • 当前位置:纬度:38.724,经度:-98.449
    • 速度:150 m / s
    • 方向:待计算

对此表示感谢,在此先感谢您!

algorithm math geometry latitude-longitude

3
推荐指数
1
解决办法
2421
查看次数